<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 1,  comments - 1,  trackbacks - 0
    有半個月沒有更新了,倒不是我沒有繼續學習,工作比較忙,晚上學習的時間短,沒有太多時間寫blog
    今天,說CallBack,JPA為我們提供了一些在進行CURD前后的一些callback methods,這些方法可以在我們進行數據持久化和查詢前后,進行一些操作,比如紀錄日志。
    先來介紹寫有幾種callback methods annotation:
    @PerPresist 持久化之前調用調用
    @PostPersist 持久化之后(官方文檔是在Object狀態變成 Persist 狀態)
    @PostLoad 查詢之后
    @PreUpdate和@PostUpdate 這兩個分別是在更新之前和之后,不過這兩個必須是在PostLoad之后,對查詢出來的數據進行更新,才會觸發
    @PreRemove和@PostReomve 分別是刪除前和刪除后(官方文檔是Object狀態變為deleted 狀態)

    下面是我的例子,當然這里只有關鍵代碼:
    2010年4月22日 星期四
     1 @PrePersist
     2     public void logPrePersist() {
     3         logger.info("PrePersist " + this.getTitle());
     4     }
     5     
     6     @PostPersist
     7     public void logPostPersist() {
     8         logger.info("PostPersist " + this.getTitle());
     9     }
    10     
    11     @PostLoad
    12     public void logPostLoad() {
    13         logger.info("PostLoad " + this.getTitle());
    14     }
    15     
    16     @PreUpdate
    17     public void logPreUpdate() {
    18         logger.info("PreUpdate " + this.getTitle());
    19     }
    20     
    21     @PostUpdate
    22     public void logPostUpdate() {
    23         logger.info("PostUpdate " + this.getTitle());
    24     }
    25     
    26     @PreRemove
    27     public void logPreRemove() {
    28         logger.info("PreRemove " + this.getTitle());
    29     }
    30     
    31     @PostRemove
    32     public void logPostRemove() {
    33         logger.info("PostRemove " + this.getTitle());
    34     }
    當然也可以用Entity Listeners ,如:
    在實體類上加上這個注解:@EntityListeners(value = { MagazineLog.class })
    然后寫MagazineLog.java:
     1 public class MagazineLog {
     2     /**
     3      * Logger for this class
     4      */
     5     private static final Logger logger = LoggerFactory.getLogger(MagazineLog.class);
     6 
     7     @PrePersist
     8     public void logPrePersist(Object pc) {
     9         logger.info("PrePersist " + ((Magazine)pc).getTitle());
    10     }
    11     
    12     @PostPersist
    13     public void logPostPersist(Object pc) {
    14         logger.info("PostPersist " + ((Magazine)pc).getTitle());
    15     }
    16     
    17     @PostLoad
    18     public void logPostLoad(Object pc) {
    19         logger.info("PostLoad " + ((Magazine)pc).getTitle());
    20     }
    21     
    22     @PreUpdate
    23     public void logPreUpdate(Object pc) {
    24         logger.info("PreUpdate " + ((Magazine)pc).getTitle());
    25     }
    26     
    27     @PostUpdate
    28     public void logPostUpdate(Object pc) {
    29         logger.info("PostUpdate " + ((Magazine)pc).getTitle());
    30     }
    31     
    32     @PreRemove
    33     public void logPreRemove(Object pc) {
    34         logger.info("PreRemove " + ((Magazine)pc).getTitle());
    35     }
    36     
    37     @PostRemove
    38     public void logPostRemove(Object pc) {
    39         logger.info("PostRemove " + ((Magazine)pc).getTitle());
    40     }
    41 }
    就這些,這個比較簡單

    posted on 2010-04-22 20:01 天獨 閱讀(282) 評論(0)  編輯  收藏 所屬分類: Java

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲美免无码中文字幕在线| 99久久99久久免费精品小说| 免费夜色污私人影院网站电影| 亚洲中文字幕久久精品无码A| 亚洲国产精品久久人人爱| 久久亚洲精品成人av无码网站| 亚洲成在人天堂在线| 91情国产l精品国产亚洲区| 亚洲人成亚洲精品| 亚洲精品中文字幕无码AV| 亚洲视频在线不卡| 亚洲av无码国产综合专区 | 18禁无遮挡无码网站免费| 国产香蕉免费精品视频| 日本亚洲免费无线码| 欧美男同gv免费网站观看| 在线免费一区二区| 国产一区二区三区免费看| 亚洲欧洲日产国码一级毛片| 亚洲亚洲人成综合网络| 亚洲AV无码码潮喷在线观看 | 免费黄色一级毛片| 亚洲第一福利网站在线观看| 亚洲人成无码www久久久| 久久亚洲国产中v天仙www| 亚洲高清美女一区二区三区| ass亚洲**毛茸茸pics| 亚洲AV成人精品一区二区三区| 免费在线观看亚洲| a毛片在线还看免费网站| 亚洲欧洲免费视频| 97无码免费人妻超级碰碰夜夜| 国产又长又粗又爽免费视频| 最新精品亚洲成a人在线观看| 亚洲伦另类中文字幕| 中文字幕 亚洲 有码 在线| 污污视频网站免费观看| 在线毛片片免费观看| 无码日韩人妻av一区免费| 亚洲国产精品第一区二区三区| 亚洲国产精品无码久久久不卡|