代码改变世界

SpringBoot整合JPA

  握瑾怀瑜  阅读(508)  评论(0编辑  收藏  举报

1 JPA介绍

SpringBoot使用JPA(java Persistence API)资源库来实现对数据库的操作,使用Mysql也是如此。

简单的说,JPA就是为POJO(Plain Ordinary Java Object)提供持久化的标准规范,将java的普通对象通过对象关系映射持久化到数据库中。

2 实体建模

注解@Entity表示是实体类(必须)

注解@Table 指定关联的数据库的表名(必须), name=表名, Indexes是声明表里的索引, columnList是索引的列, 同时声明此索引列是否唯一, 默认false

注解@Id (必须)定义一条记录的唯一标识,并结合注解@GeneratedValue将其设置为自动生成。

通过实体类的定义,实现了使用java的普通对象与数据库表建立映射关系(ORM),接下来使用JPA来实现持久化。

3 实体持久化

这是一个dao层的接口,并继承JPA资源库JpaRepository接口,使用注解@Repository将这个接口也定义为一个资源库,使他能被其他程序引用,并为其他程序提供存取数据库的功能。

这样就实现了存取数据库的功能了。现在可以对数据库进行增删改查。

或许你还有疑问,我们定义的接口并没有声明一个方法,也没有对接口有任何实现的代码,甚至连一条sql查询语句都没有写,这怎么可能?

是的JPA就是这么简单。我们来看看JpaRepository的继承关系,就一目了然。

JpaRepository继承于PagingAndSortingRepository,它提供了分页和排序功能。

PagingAndSortingRepository继承于CrudRepository,它提供了简单的增删改查功能。

因为定义的接口继承于Repository,所以它传递性的继承了上面所有接口,并拥有这些接口的所有方法。

4 测试

目录结构

dao层代码

service层 和 service实现类代码

 

 

controller层代码

jmeter调用controller层的save,保存一条数据到数据库中,此时数据库中是没有建表的。

 

 a)启动服务

 

 

 数据库中刚刚建好的表

 

 b) 用jmeter调用save

控制台日志(Jpa本质上是调用的Hibernate)

 

 数据库数据(JPA方式已经将数据保存到数据库)

 

 5 总结

1:使用JPA架构 不需要创建数据库表,服务会根据实体类的定义自动建表。

2:使用JPA结构,不需要写复杂的sql代码,底层调用了Hibernate.只需要继承一个JpaRepository接口即可。

3:使用JPA结构俩大核心 a) 主要是实体类的定义,注解的使用,
                     b)以及dao层几层JpaRepository接口
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示