Spring数据持久化——使用JdbcTemplate以及JPA
作者:
yuq329 | 来源:发表于
2020-06-09 19:15 被阅读0次
使用数据
-
JDBC
:Java Database Connectivity
-
JPA
:Java 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
:标注数据是生成的值,可以设置strategy
为Auto
-
@ManyToMany
:声明对象之间的映射关系,多对多
-
@PrePersist
:注明函数在持久化之前的运行
-
@Table(name="table_name")
:表明类实体应该持久化到name=“repository_name”
表中,但是这个表名的大小写无法控制
- 控制表名需要重写
PhysicalNamingStrategy
类,并设置hibernate命名策略
(参考链接)
-
@Enumerated(EnumType.STRING)
:设定枚举类型在表中的类型
-
JPA
需要一个无参构造器
-
@NoArgsConstructor
:Lombok注解
能够实现无参构造器
-
CrudRepository
接口
- 默认实现
CRUD
等操作,数据仓库接口继承该类就可以使用
- 自定义
- 根据方法名
- 方法名组成:动词+[主题]+关键词+断言
- 主题一般就是查找的类型,可以省略
- 动词是指明方法想要执行的动作,例如查找
find
、删除delete
、保存save
等
- 断言指定查找的属性以及筛选条件
- 例如:
findByZip()
、readOrdersByZipAndPlacedAtBetween()
- 使用
@Query
注解
- 方法名上使用注解,在注解中指明明确需要调用的
sql语句
Reference
Spring实战第三章代码
本文标题:Spring数据持久化——使用JdbcTemplate以及JPA
本文链接:https://www.haomeiwen.com/subject/fxpetktx.html
网友评论