简介Spring Data Jpa 是应⽤于Dao层的⼀个框架,简化数据库开发的,作⽤和Mybatis框架⼀样,但是在使
⽤⽅式和底层机制是有所不同的。最明显的⼀个特点,Spring Data Jpa 开发Dao的时候,很多场景我们
连sql语句都不需要开发。由Spring出品。
Spring Data JPA 是 Spring 基于JPA 规范的基础上封装的⼀套 JPA 应⽤框架,可使开发者⽤极简的
代码即可实现对数据库的访问和操作。它提供了包括增删改查等在内的常⽤功能!学习并使⽤
Spring Data JPA 可以极⼤提⾼开发效率。
说明:Spring Data JPA 极⼤简化了数据访问层代码。
如何简化呢?使⽤了Spring Data JPA,我们Dao层中只需要写接⼝,不需要写实现类,就⾃动具有
了增删改查、分⻚查询等⽅法。
使⽤Spring Data JPA 很多场景下不需要我们⾃⼰写sql语句
JPA规范和Hibernate之间的关系
Spring Data JPA 是 Spring 提供的⼀个封装了JPA 操作的框架,⽽ JPA 仅仅是规范,单独使⽤规范⽆法
具体做什么,那么Spring Data JPA 、 JPA规范 以及 Hibernate (JPA 规范的⼀种实现)之间的关系是什
么?
image
JPA 是⼀套规范,内部是由接⼝和抽象类组成的,Hiberanate 是⼀套成熟的 ORM 框架,⽽且
Hiberanate 实现了 JPA 规范,所以可以称 Hiberanate 为 JPA 的⼀种实现⽅式,我们使⽤ JPA 的 API 编
程,意味着站在更⾼的⻆度去看待问题(⾯向接⼝编程)。
Spring Data JPA 是 Spring 提供的⼀套对 JPA 操作更加⾼级的封装,是在 JPA 规范下的专⻔⽤来进⾏数
据持久化的解决⽅案。
Spring Data JPA 常用注解
1.@Entity:标识实体类是JPA实体,告诉JPA在程序运行时生成实体类对应表
2.@Table:设置实体类在数据库所对应的表名
3.@Id:标识类里所在变量为主键
4.@GeneratedValue:设置主键生成策略,此方式依赖于具体的数据库
5.@Column:表示属性所对应字段名进行个性化设置
6.@Transient:表示属性并非数据库表字段的映射,ORM框架将忽略该属性
7.@Temporal:(很重要)
当我们使用到java.util包中的时间日期类型,则需要此注释来说明转化成java.util包中的类型。
注入数据库的类型有三种:
TemporalType.DATE(2008-08-08)
TemporalType.TIME(20:00:00)
TemporalType.TIMESTAMP(2008-08-08 20:00:00.000000001)
8.@Enumerated:(很重要)
使用此注解映射枚举字段,以String类型存入数据库
注入数据库的类型有两种:EnumType.ORDINAL(Interger)、EnumType.STRING(String)
9.@Embedded、@Embeddable:
当一个实体类要在多个不同的实体类中进行使用,而其不需要生成数据库表 @Embeddable:注解在类上,表示此类是可以被其他类嵌套 @Embedded:注解在属性上,表示嵌套被@Embeddable注解的同类型类
10.@ElementCollection:集合映射
11.@CreatedDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy:(很重要)
表示字段为创建时间字段(insert自动设置)、创建用户字段(insert自动设置)、最后修改时间字段(update自定设置)、最后修改用户字段(update自定设置)
用法:
1、@EntityListeners(AuditingEntityListener.class):申明实体类并加注解`
2 、实现AuditorAware类
3、springboot 启动类加上注解@EnableJpaAuditing
4、在实体类中属性中加上面四种注解
后续会写个这个的demo
12.@MappedSuperclass:(很重要)
实现将实体类的多个属性分别封装到不同的非实体类中
注解的类将不是完整的实体类,不会映射到数据库表,但其属性将映射到子类的数据库字段
注解的类不能再标注@Entity或@Table注解,也无需实现序列化接口
注解的类继承另一个实体类 或 标注@MappedSuperclass类,他可使用@AttributeOverride 或 @AttributeOverrides注解重定义其父类属性映射到数据库表中字段。
具体使用:关注GZH (Java架构宝典)
Spring Data JPA 使用导入坐标
配置 Spring 的配置⽂件
编写实体类,使⽤ JPA 注解配置映射关系编写 接⼝
测试
分析