JSR338(Java Persistence)

1、Entity

1.1 Entity类

实体类必须要有无参构造函数,并且是public或者protected。

不能是final类。

实体作为detached object 传递值时,需要实现Serializable接口

支持继承,多态关联,及查询

抽象和具体类可以是实体。实体类可以继承非实体类和实体类,非实体类可以继承实体类

1.2 主键和实体标识

每个实体需要有一个主键。

主键对应一个或者多个属性或者字段,分为简单主键和复合主键。简单主键使用@Id,复合主键使用@EmbeddedId或者@IdClass。

主键或者复合主键的字段必做是基础类型,基础类型包装类java.lang.String, java.util.Date,java.sql.Date,java.math.BigDecimal,java.math.BigInteger

复合类型主键约束规则

  • 主键必须是public,有无参构造函数
  • 主键的访问类型由实体的访问类型决定。除非主键是嵌入id并且指定了不同的访问类型。
  • 基于属性访问时,属性必须是public或者protected
  • 主键必须是可序列化的
  • 主键类定义equals和hashCode方法。
  • 复合主键要么表示和映射为一个嵌入类,或者表示为一个id类,映射到多个字段或者属性
  • 复合主键表示为一个id类时,主键类的主要字段或者属性的名称必须与id类映射的实体类相对对应,它们的类型也必须相同。
  • 主键对应继承标识符时,遵循以下规则

依赖类使用id类来表示主键时,规则如下

id类的属性名称与依赖实体的id属性遵循以下规则

(1)依赖实体的id属性和id类对应属性的名称相同

(2) 实体的id属性是基础类型,id类的对应属性也有相同的类型

(3)实体的id属性与父实体是多对一或者一对一关系,id类的属性与id类或者父实体的嵌入id有相同的类型。

依赖实体有单一主键属性时,依赖实体类指定的id类必须与父类实体的主键类型相同

依赖实体使用嵌入id表示主键时,嵌入id的属性必须与父类实体主键有相同类型,必须用@MapsId注解指明关联属性

1.2.1 继承Id映射

在默认映射不适用时或者默认映射会覆盖时,使用JoinColumn或者JoinColumns注解来表示关系属性

2、操作

相关接口

2.1 实体生命周期

new, managed, detached, removed

2.2 持久上下文生命周期和同步类型

持久上下文生命周期类型有TRANSATION,EXTENDED

2.3 监听器和回调方法

用EntityListeners注解来定义监听器,监听器顺序由注解指明的顺序决定

实体监听器类必做有无参构造函数

回调方法通过注解来指定。方法签名形式为

void <METHOD>(),在实例类中定义的

void <METHOD>(Object) 在监听器类中定义 

回调方法可以是public, private,protected,包级级的,但是不能是static或者final

支持的注解类型为

PrePersist
PostPersist
PreRemove
PostRemove
PreUpdate
PostUpdate
PostLoad

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值