java spring jpa_Spring Data JPA 框架

2ba02880be277bdb60e03a1b22c270d8.png

简介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 规范的⼀种实现)之间的关系是什

么?1cd5c91c4c9180e317971db411c168f2.png

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 使用导入坐标726e154c521ad35c0430422cbd1e5cb4.png

配置 Spring 的配置⽂件

589cd804603edbbfd80b281e9611e536.png

编写实体类,使⽤ JPA 注解配置映射关系aa3f189e0217a8096b237d283ea3745e.png编写 接⼝

a2745fe5a745a287462eeed79fa3b3b1.png测试

85a90e44b7e2fa2f6f147287caf73414.png

分析c49e574d26e19f0ce991b8e455ea875b.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值