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

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


    網站導航:
     
    主站蜘蛛池模板: 在线看片免费不卡人成视频| 免费无遮挡无码永久在线观看视频| 亚洲日韩乱码中文无码蜜桃臀| 成年男女免费视频网站| 无忧传媒视频免费观看入口| 亚洲人成色777777在线观看 | 免费观看毛片视频| 国产大片免费天天看| 亚洲欧洲精品国产区| 亚洲福利中文字幕在线网址| 中文字幕免费视频一| 黄页网址在线免费观看| 久久夜色精品国产噜噜噜亚洲AV| 最新69国产成人精品免费视频动漫| 十八禁视频在线观看免费无码无遮挡骂过 | 亚洲AV无码一区二区三区DV| 最近最新的免费中文字幕| 国产福利免费视频 | 亚洲偷自精品三十六区| 国产亚洲一区区二区在线 | 亚洲国产V高清在线观看| 97性无码区免费| 最近更新免费中文字幕大全| 亚洲人片在线观看天堂无码| 亚洲国产成人久久综合碰碰动漫3d| 国产区卡一卡二卡三乱码免费| 91精品国产免费网站| 成人网站免费大全日韩国产 | 亚洲最大的成人网| 亚洲视频精品在线| 国产福利电影一区二区三区,亚洲国模精品一区 | 久久久久高潮毛片免费全部播放 | 在线观着免费观看国产黄| 99xxoo视频在线永久免费观看| 四虎影视久久久免费 | 日本免费网站视频www区| 亚洲免费观看视频| 一级毛片免费在线| 美女视频黄频a免费观看| 亚洲乱码无人区卡1卡2卡3| 亚洲国产精品成人精品软件|