最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JPA中EntityListeners注解的使用詳解

 更新時(shí)間:2019年01月09日 14:31:03   作者:張占嶺  
這篇文章主要介紹了JPA中EntityListeners注解的使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

使用場(chǎng)景

EntityListeners在jpa中使用,如果你是mybatis是不可以用的

它的意義

對(duì)實(shí)體屬性變化的跟蹤,它提供了保存前,保存后,更新前,更新后,刪除前,刪除后等狀態(tài),就像是攔截器一樣,你可以在攔截方法里重寫你的個(gè)性化邏輯。

它的使用

定義接口,如實(shí)體追蹤

/**
 * 數(shù)據(jù)建立與更新.
 */
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之后的操作");

 }
}

實(shí)體去實(shí)現(xiàn)這個(gè)對(duì)應(yīng)的跟蹤接口

@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;
 }
}

上面代碼將實(shí)現(xiàn)在實(shí)體保存時(shí)對(duì) createTime , lastUpdateTime 進(jìn)行賦值,當(dāng)實(shí)體進(jìn)行更新時(shí)對(duì) lastUpdateTime 進(jìn)行重新賦值的操作。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何使用hutool做本地緩存的工具類

    如何使用hutool做本地緩存的工具類

    這篇文章主要介紹了如何使用hutool做本地緩存的工具類,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 在es中查詢null值的操作方法

    在es中查詢null值的操作方法

    在我們向es中寫入數(shù)據(jù)時(shí),有些時(shí)候數(shù)據(jù)寫入到es中的是null,或者沒(méi)有寫入這個(gè)字段,那么這個(gè)時(shí)候在es中該如何查詢出這種為null的數(shù)據(jù)呢,本文給大家詳細(xì)講解,需要的朋友參考下吧
    2023-02-02
  • 舉例講解Java設(shè)計(jì)模式編程中模板方法模式的運(yùn)用實(shí)例

    舉例講解Java設(shè)計(jì)模式編程中模板方法模式的運(yùn)用實(shí)例

    這篇文章主要介紹了Java設(shè)計(jì)模式編程中模板方法模式的運(yùn)用實(shí)例,模板方法模式強(qiáng)調(diào)基于繼承的代碼復(fù)用,需要的朋友可以參考下
    2016-05-05
  • springboot+dubbo+zookeeper的簡(jiǎn)單實(shí)例詳解

    springboot+dubbo+zookeeper的簡(jiǎn)單實(shí)例詳解

    本文主要介紹了springboot+dubbo+zookeeper的簡(jiǎn)單實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Java線程的start方法回調(diào)run方法的操作技巧

    Java線程的start方法回調(diào)run方法的操作技巧

    面試過(guò)程中經(jīng)常會(huì)被面試官問(wèn)到為什么我們調(diào)用start()方法時(shí)會(huì)執(zhí)行run()方法,為什么不能直接調(diào)用run()方法,問(wèn)的一頭霧水,今天小編給大家介紹下Java線程的start方法回調(diào)run方法的操作技巧,需要的朋友參考下吧
    2017-11-11
  • java觀察者模式的三種實(shí)現(xiàn)方式代碼實(shí)例

    java觀察者模式的三種實(shí)現(xiàn)方式代碼實(shí)例

    這篇文章主要介紹了java觀察者模式的三種實(shí)現(xiàn)方式代碼實(shí)例,觀察者模式(又被稱為發(fā)布-訂閱(Publish/Subscribe)模式,屬于行為型模式的一種,它定義了一種一對(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象,需要的朋友可以參考下
    2023-10-10
  • 簡(jiǎn)單談?wù)凧ava遍歷樹(shù)深度優(yōu)先和廣度優(yōu)先的操作方式

    簡(jiǎn)單談?wù)凧ava遍歷樹(shù)深度優(yōu)先和廣度優(yōu)先的操作方式

    這篇文章主要介紹了簡(jiǎn)單談?wù)凧ava遍歷樹(shù)深度優(yōu)先和廣度優(yōu)先的操作方式的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 淺談hibernate急迫加載問(wèn)題(多重外鍵關(guān)聯(lián))

    淺談hibernate急迫加載問(wèn)題(多重外鍵關(guān)聯(lián))

    這篇文章主要介紹了淺談hibernate急迫加載問(wèn)題(多重外鍵關(guān)聯(lián)),具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 單機(jī)redis分布式鎖實(shí)現(xiàn)原理解析

    單機(jī)redis分布式鎖實(shí)現(xiàn)原理解析

    這篇文章主要介紹了單機(jī)redis分布式鎖實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Spring JPA學(xué)習(xí)之delete方法示例詳解

    Spring JPA學(xué)習(xí)之delete方法示例詳解

    這篇文章主要為大家介紹了Spring JPA學(xué)習(xí)delete方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04

最新評(píng)論

黄龙县| 漳平市| 自贡市| 万源市| 南漳县| 吴堡县| 故城县| 共和县| 鱼台县| 天柱县| 闻喜县| 嫩江县| 封开县| 南昌市| 璧山县| 多伦县| 池州市| 沛县| 隆德县| 宜阳县| 梓潼县| 彰化县| 香港 | 许昌县| 嘉祥县| 磴口县| 望都县| 得荣县| 榆树市| 贵州省| 台北县| 龙岩市| 竹溪县| 玉林市| 文安县| 盘锦市| 南漳县| 遂昌县| 汉中市| 息烽县| 赣州市|