当您需要将自己的操作方法绑定到某个实体生命周期事件时,请不要重新发明轮子。只需依靠内置的JPA回调。
本应用是启用JPA回调(Pre/ PostPersist,Pre/ PostUpdate,Pre/ PostRemove,和PostLoad)的示例。
第一步:在实体中,编写回调方法并使用正确的注释:
@Entity
public class User implements Serializable {
private static final Logger logger =
Logger.getLogger(User.class.getName());
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String city;
private int age;
@PrePersist
public void prePersist() {
logger.info("@PrePersist callback ...");
}
@PreUpdate
public void preUpdate() {
logger.info("@PreUpdate callback ...");
}
@PreRemove
public void preRemove() {
logger.info("@PreRemove callback ...");
}
@PostLoad
public void postLoad() {
logger.info("@PostLoad callback ...");
}
@PostPersist
public void postPersist() {
logger.info("@PostPersist callback ...");
}
@PostUpdate
public void postUpdate() {
logger.info("@PostUpdate callback ...");
}
@PostRemove
public void postRemove() {
logger.info("@PostRemove callback ...");
}
|
注意:在bean类上注释的回调方法必须返回void并且不带参数,比如@PrePersist 到@PostRemove
源代码可以在这里找到