spring boot 整合JPA
本文详细介绍SpringBoot项目中整合JPA的过程,包括创建项目、配置数据源、实体类定义、DAO层操作、Service接口及实现、扩展JPA查询、Controller层设计与测试验证等关键步骤,提供了一个完整的JPA应用案例。
文章信息
- 原文链接:https://jiayq.blog.csdn.net/article/details/104380311
- 发布时间:2020-02-19 18:59:44
- 阅读量:898
- 分类:微服务同时被 3 个专栏收录, 订阅专栏, spring boot, JPA
- 标签:#spring boot jpa, #springboot整合jpa, #jpa常用, #jpa测试类, #DSC
摘要
文章浏览阅读898次。本文详细介绍SpringBoot项目中整合JPA的过程,包括创建项目、配置数据源、实体类定义、DAO层操作、Service接口及实现、扩展JPA查询、Controller层设计与测试验证等关键步骤,提供了一个完整的JPA应用案例。
spring boot 整合JPA
- 1. 创建gradle项目
- 2. 配置数据源
- 3. 实体类
- 4. DAO
- 5. service接口
- 6. 逻辑删除
- 7. serviceimpl
- 8. 实现扩展jpa查询
- 9. controller
- 10. 测试类
- 10.1 dao
- 10.2 service
- 10.3 controller
- 10.4 真实验证
- 10.1 dao
git地址
https://github.com/a18792721831/studySpringCloud.git
JPA 全称为JAVA Persistence API,它是一个数据持久化的类和方法的集合。JPA的目标是制定一个由很多数据库供应商实现的API,开发人员可以通过编码实现该API。目前,在Java项目开发中提到JPA一般是指用Hibernate 的实现,因为在Java的ORM框架中,只有 Hibernate实现得最好。
1. 创建gradle项目
2. 配置数据源
在工程的配置文件 application.yml文件中加上相应的配置,需要配置两个选项,DataSource数据源的配置和JPA的配置。其中,数据源的配置包括连接oracle的驱动类(例如com.oracle.jdbc.Driver)、oracle 数据库的地址 Url、oracle数据库的用户名username 和密码 password,JPA 的配置包括hibernate. ddl-auto 配置,配置为create时,程序启动时会在oracle数据库创建表:配置为 update时,在程序启动时不会在oracle数据库中建表:jpa.show.sql配置为在通过JPA 操作数据库时是否显示操作的SQL语句。配置代码如下:

不要担心,当依赖下载完,在配置文件中写配置是有提示的(自动补全)
3. 实体类
通过@Entity 注解表明该类是一个实体类,它和数据库的表名相对应;@Id注解表明该变
量对应于数据库中的Id,@GeneratedValue 注解配置. Id 字段为自增长;@Column 表明该变量对应于数据库表中的字段,unique=true 表明该变量对应于数据库表中的字段为唯一约束。
4. DAO
数据访问层DAO,通过编写一个UserDao类,该类继承 JpaRepository的接口,继承之
后就能对数据库进行读写操作,包含了基本的单表查询的方法,非常方便。在UserDao类写一个findByUsername的方法,传入参数username,JPA已经实现了根据某个字段去查找的方法所以该方法可以根据username字段从数据库中获取User的数据,不需要做额外的编码。代码如下:

5. service接口
service 接口定义提供哪些服务

ps:service接口本身不会注入spring容器,而是将service的实现以service 接口的名字注入spring容器
6. 逻辑删除
为了实现逻辑删除,需要有一个字段来标记记录是否有效。

创建枚举,有name和value属性,使用lombok注解生成get方法,然后实现from方法,根据vale获取枚举,外层使用optional进行处理空指针异常。
然后实现转换类

接着在属性中指定使用哪个转换类

7. serviceimpl
8. 实现扩展jpa查询
实现根据名字和状态进行查询,jpa中没有已经实现的,只能自己实现

然后就可以使用了

9. controller
10. 测试类
10.1 dao
10.2 service

测试结果

验证

这两条是新生成的,不是dao测试生成的,其值不同
10.3 controller

其id是在service中新增的
测试结果

每次测试完成会将数据删除










