Spring Boot扩展:JPA 中的实体类

JPA(Java Persistence API)是一个规范,通过提供 ORM 功能,使开发者能够利用 Java Domain Model 控制关系数据库。JPA 仅是一个规范,目前业界有几种不同的实现,例如 Hibernate、EclipseLink、TopLink、Open JPA 等。Spring Boot2 默认使用 Hibernate 作为底层实现。

JPA 的主要关注点在 ORM 层。ORM(Object-Relational Mapping)是指从 Java object 转换到数据库表的过程。

Entity(实体)就是简单的 POJO 对象,例如表示学生的 Student 类、表示国家的 Country 类等。JPA 中定义了@Entity来标识某个类是实体类。被标记的实体类必须满足:

  • 包含无参构造器
  • 必须指定标识符,即@Id标注的,用来定义表中的主键
  • 必须不能被 final 修饰,因为 JPA 实现通常会尝试继承实体类来扩展其功能

01-主键标识符

Hibernate 中主键标识符用来指明实体类中的属性作为对应数据库表中的主键。主键标识符一般可分为四种类型:简单标识符、生成标识符(Generated Identifiers)、复合标识符和派生标识符。

  1. 简单标识符。最简单的一种,指使用@Id标注标识在实体类的属性来声明的标识符。支持的属性类型包括三类:基本类型、基本类型的包装类型和 String、Date、BigDecimal、BigInteger。
  2. 生成标识符。指通过@Id@GeneratedValue注解标注的,在持久化时有 JPA 实现自动生成的标识符。此类标识符根据生成策略不同,划分为五类:
  • GenerationType.AUTO,不显示指定策略时,默认使用此策略。对数字类型的属性值,使用基于 sequence 或 table 的策略,对于 UUID 类型的使用 UUIDGenerator(需 Hibernate 5及以上版本)。
  • GenerationType.IDENTITY,基于 IdentityGenerator,要求目标数据库表中存在 identify 列。例如,MySQL 中可以在建表时声明某个列为 auto_increment,当 JPA 实现插入数据时会自动递增。
  • GenerationType.SEQUENCE,基于 SequenceStyleGenerator,用于支持 Oracle 等这种可以定义 Sequence 的数据库。例如:
@Id
@GeneratedVa
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值