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 天独 阅读(259) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航: