Springboot JPA 的注解配置解释

@CreationTimestamp 注解是放在JPA的实体类上的

会生成一个默认的一个时间戳

@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)这个会联级保存关系

@NotAudited 这个不会保存联级关系

@embeddable是注释Java类的,表示类是嵌入类。
@embedded是注释属性的,表示该属性的类是嵌入类。

例子:
@Embeddable @Access(AccessType.FIELD)
public class Address {
private String street;
private String city;
private String state;
@Column(name="ZIP_CODE")
private String zip;
// ...
}
@Entity
public class Employee {
@Id private int id;
private String name;
private long salary;
@Embedded private Address address;
// ...
}

@deprecated的程序元素是不鼓励程序员使用的元素,通常是因为它是危险的,或者是因为存在更好的替代方案。编译器在非弃用代码中使用或重写预先指定的程序元素时发出警告。

        不建议使用@deprecated标注过的类或方法。

 @Access批注,有两种模式包括:

                AccessType.FIELD;        

                AccessType.PROPERTY,

这两个类型定义了实体的访问模式(Access mode)。

通过字段来获取或设置实体的状态,getter和setter方法可能存在或不存在。这样JPA默认的访问类型为AccessType.FIELD

持久化属性必须有getter和setter方法,属性的类型由getter方法的返回类型决定,同时必须与传递到setter方法的单个参数的类型相同。这样JPA默认的访问类型为AccessType.PROPERTY

@Transient(临时的)。(使其不会被正常的访问模式持久化)

JPA 中查询的时候加了@param 和没有加的区别: 

@Modifying(clearAutomatically=true):

@Query注解只有对数据查询的操作,如果你需要进行对数据的修改那就必须使用@Modifying注解。

点击@Modifying,进入这个注解,我们能看到,有两个方法

flushAutomatically() default false;

clearAutomatically() default false;   

它是指可以清除底层持久化上下文,即entityManager这个类;Jpa底层实现会有一级缓存,也就是在更新完数据库后,如果后面去用这个对象,你再去查这个对象,这个对象是在一级缓存,但是并没有跟数据库同步,

使用clearAutomatically=true,就会刷新Hibernate的一级缓存, 否则在同一接口中,更新一个对象,接着查询这个对象,那么查出来的这个对象还是之前的没有更新前的状态。

使用flushAutomatically=true 为,在执行修改之后,没有使用flush 的话执行clearAutomatically=true 可能会导致修改的数据丢失。 

@Modifying 的 clearAutomatically 属性为 true 时,执行完 modifying query 之后就会清理缓存。
自动清理之后还会带来一个新的问题,clear 操作清理的缓存中,还包括提交后未 flush 的数据,例如调用 save 而不是 saveAndFlush 就有可能不会立即将修改内容更新到数据库中,在 save 之后 flush 之前调用 @Modifying(clearAutomatically = true) 修饰的方法就有可能导致修改丢失。如果再要解决这个问题,还可以再加上另外一个属性 @Modifying(clearAutomatically = true, flushAutomatically = true),@Modifying 的 flushAutomatically 属性为 true 时,执行 modifying query 之前会先调用 flush 操作,从而避免数据丢失问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值