EntityListeners注解怎么在JPA中使用?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
使用場景
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中使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。