美文网首页
Spring数据持久化——使用JdbcTemplate以及JPA

Spring数据持久化——使用JdbcTemplate以及JPA

作者: yuq329 | 来源:发表于2020-06-09 19:15 被阅读0次

使用数据

  • JDBCJava Database Connectivity
  • JPAJava Persistence API

使用JDBC读取和写入数据

  • JdbcTemplate
    • 简化对关系型数据库执行SQL操作的步骤,比如不用手动连接、关闭清理、异常捕捉等操作
    • 常用方法
      • query()
      • queryForObject()
      • update()
  • @Repository:添加注解后,Spring``组件扫描将会自动发现,并初始化为Spring上下文中的bean。同样的注解还有@Controller@Component
  • @AutoWired
  • 定义模式与预加载数据
    • Spring Boot会在应用启动时自动加载src/main/resources文件夹下的schema.sql以及data.sql文件
    • 编写创建表的schema.sql文件
    • 编写预加载数据的data.sql文件
  • 插入数据
    • JdbcTemplate有两种保存数据的方法
      • 直接使用update()方法
      • 使用SimpleJdbcInsert包装器类
    • 得到数据库生成的ID
      • PreparedStatementCreator
      • KeyHolder
    • @SessionAttributes("object"):类级别的Session能够指定Object保存在session中,这样才能跨请求使用
    • @ModelAttribute(name="object"):能够确保在模型中创建一个object对象

使用Spring Data JPA持久化数据

  • Spring Data是一个巨大的伞形项目,由多个子项目组成,比较流行的几个项目包括:
    • Spring Data JPA:基于关系型数据库进行JPA持久化
    • Spring Data MongoDB:持久化到Mongo文档数据库
    • Spring Data Neo4j:持久化到Neo4j图数据库
    • Spring Data Redis:持久化到Redis key-value存储
    • Spring Data Cassandra:持久化到Cassandra数据库
  • 特性
    • 基于repository规范接口自动生成repository的功能
  • 注解
    • @Entity:将类声明为JPA实体
    • @Id:注明id属性
    • @GeneratedValue:标注数据是生成的值,可以设置strategyAuto
    • @ManyToMany:声明对象之间的映射关系,多对多
    • @PrePersist:注明函数在持久化之前的运行
    • @Table(name="table_name"):表明类实体应该持久化到name=“repository_name”表中,但是这个表名的大小写无法控制
      • 控制表名需要重写PhysicalNamingStrategy类,并设置hibernate命名策略参考链接
    • @Enumerated(EnumType.STRING):设定枚举类型在表中的类型
  • JPA需要一个无参构造器
    • @NoArgsConstructorLombok注解能够实现无参构造器
  • CrudRepository接口
    • 默认实现CRUD等操作,数据仓库接口继承该类就可以使用
    • 自定义
      • 根据方法名
        • 方法名组成:动词+[主题]+关键词+断言
        • 主题一般就是查找的类型,可以省略
        • 动词是指明方法想要执行的动作,例如查找find、删除delete、保存save
        • 断言指定查找的属性以及筛选条件
        • 例如:findByZip()readOrdersByZipAndPlacedAtBetween()
      • 使用@Query注解
        • 方法名上使用注解,在注解中指明明确需要调用的sql语句

Reference

Spring实战第三章代码

相关文章

网友评论

      本文标题:Spring数据持久化——使用JdbcTemplate以及JPA

      本文链接:https://www.haomeiwen.com/subject/fxpetktx.html