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接口