EntityListeners注解怎么在JPA中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
创新互联建站主营昌邑网站建设的网络公司,主营网站建设方案,App定制开发,昌邑h5微信小程序开发搭建,昌邑网站营销推广欢迎昌邑等地区企业咨询
使用场景
EntityListeners在jpa中使用,如果你是mybatis是不可以用的
它的意义
对实体属性变化的跟踪,它提供了保存前,保存后,更新前,更新后,删除前,删除后等状态,就像是拦截器一样,你可以在拦截方法里重写你的个性化逻辑。
它的使用
定义接口,如实体追踪
/** * 数据建立与更新. */ public interface DataEntity { Timestamp getDateCreated(); void setDateCreated(Timestamp dateCreated); Timestamp getLastUpdated(); void setLastUpdated(Timestamp lastUpdated); Long getDateCreatedOn(); void setDateCreatedOn(Long dateCreatedOn); Long getLastUpdatedOn(); void setLastUpdatedOn(Long lastUpdatedOn); }
定义跟踪器
@Slf4j @Component @Transactional public class DataEntityListener { @PrePersist public void prePersist(DataEntity object) throws IllegalArgumentException, IllegalAccessException { Timestamp now = Timestamp.from(Instant.now()); object.setDateCreated(now); object.setLastUpdated(now); logger.debug("save之前的操作"); } @PostPersist public void postpersist(DataEntity object) throws IllegalArgumentException, IllegalAccessException { logger.debug("save之后的操作"); } @PreUpdate public void preUpdate(DataEntity object) throws IllegalArgumentException, IllegalAccessException { Timestamp now = Timestamp.from(Instant.now()); object.setLastUpdated(now); logger.debug("update之前的操作"); } @PostUpdate public void postUpdate(DataEntity object) throws IllegalArgumentException, IllegalAccessException { logger.debug("update之后的操作"); } @PreRemove public void preRemove(DataEntity object) { logger.debug("del之前的操作"); } @PostRemove public void postRemove(DataEntity object) { logger.debug("del之后的操作"); } }
实体去实现这个对应的跟踪接口
@EntityListeners(DataEntityListener.class) public class Product implements DataEntity { @Override public Timestamp getDateCreated() { return createTime; } @Override public void setDateCreated(Timestamp dateCreated) { createTime = dateCreated; } @Override public Timestamp getLastUpdated() { return lastUpdateTime; } @Override public void setLastUpdated(Timestamp lastUpdated) { this.lastUpdateTime = lastUpdated; } @Override public Long getDateCreatedOn() { return createOn; } @Override public void setDateCreatedOn(Long dateCreatedOn) { createOn = dateCreatedOn; } @Override public Long getLastUpdatedOn() { return lastUpdateOn; } @Override public void setLastUpdatedOn(Long lastUpdatedOn) { this.lastUpdateOn = lastUpdatedOn; } }
看完上述内容,你们掌握EntityListeners注解怎么在JPA中使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!