代码改变世界

SpringBoot整合JPA

2021-04-13 16:09  握瑾怀瑜  阅读(502)  评论(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接口