Spring Data JPA应用之查询操作初体验
Spring Data JPA是什么?首先JPA 是⼀套规范——一个数据存储标准定义,内部是由接⼝和抽象类组成的,并且有许多实现方式,Hibernate就是其中一种实现范式。通过JPA可以将我们的业务与具体所要存储的数据库解耦而不需要为不同的数据库编写不同的处理方法,从而方便在多种数据库之间进行切换。Spring Data JPA 是 Spring 提供的⼀套对 JPA 操作更加⾼级的封装,是在 JPA 规范下的专⻔⽤来进⾏数据持久化的解决⽅案。
下面进行具体实践:
需求:使⽤ Spring Data JPA 完成对 tb_resume表(简历表)的Dao 层操作(增删改查,排序,分⻚等)
数据库表设计——具体表结构及存量数据如下图:
大致开发流程汇总:
1、构建⼯程
创建⼯程导⼊坐标(Java框架于我们⽽⾔就是⼀堆jar)
配置 Spring 的配置⽂件(配置指定框架执⾏的细节)
编写实体类 Resume,使⽤ JPA 注解配置映射关系
编写⼀个符合 Spring Data JPA 的 Dao 层接⼝(ResumeDao接⼝)
2、操作 ResumeDao 接⼝对象完成 Dao 层开发
下面开始按大致流程进行具体的实践:
1、导入坐标(可以边开发边添加)
2、配置Spring配置文件(xml)
如果使用注解进行配置,可以如下:
3、编写实体类Resume,使用JPA注解配置映射关系
其中常用注解示意如下:
@Entity:
该注解的意思是指所注解的类会被认为是JPA的一个实体对象,JPA就会对该对象进行映射处理。必须注意的事该类中必须有一个空的构造函数,当从数据库中加载对象时,JPA就会通过该构造函数来实例化对象并将数据库中的值赋值给所构建的实例。
@Id&&@GeneratedValue:(这个@ID一定要有,否则编译都不成功)
@Id用来注解数据库主键,并通过@GeneratedValue告诉JPA自动生成主键的值,默认情况下回使用数据库自增方式,也可以通过注解@SequenceGenerator来指定主键的生成方式。
@Table:
该注解使用在业务实体类上,可以让自定义实体类自动映射到数据库具体指定表上。
@Column:
实际上比较少用到,本案例中就没有用到。一般JPA会自动将实体中的字段安装默认规则与数据库表进行一一映射,只有当默认的规则无法满足时才需要使用到该注解指定字段映射关系。
4、编写符合Spring Data JPA数据范围规范的Dao层接口
使用Spring Data JPA建立数据访问层十分简单,只需要定义一个基础JpaRepository的接口即可,如下:
这一步是很关键。
5、测试类
测试结果:
我们可以看下JpaRepository提供的方法:
整个过程中没有出现任何的sql相关的内容,甚至自定义的接口中方法都可以没有直接使用父类的方法。