当您需要将自己的操作方法绑定到某个实体生命周期事件时,请不要重新发明轮子。只需依靠内置的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
源代码可以在这里找到