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 天獨 閱讀(280) 評論(0)  編輯  收藏 所屬分類: Java

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


          網站導航:
           
          主站蜘蛛池模板: 彩票| 德庆县| 松原市| 天门市| 大余县| 中阳县| 稻城县| 临夏市| 鄂托克前旗| 页游| 乌拉特中旗| 宁阳县| 增城市| 自治县| 铜川市| 灵武市| 冀州市| 东乡| 西盟| 墨玉县| 股票| 忻城县| 平邑县| 塔城市| 潮州市| 芜湖市| 岳普湖县| 新田县| 九台市| 芒康县| 潮安县| 九龙城区| 上犹县| 威信县| 馆陶县| 河南省| 桐柏县| 益阳市| 渝中区| 大竹县| 湛江市|