2011-04-24 45 views
0

在Hibernate持久化一个实体之前,有没有一种很好的优雅方式来设置一个bean值(列)?基本上我有一个名为“modification_date”的字段。它在一堆实体上。每当这些实体中的一个被更新/修改时,我基本上都会自动设置该字段。在继续Hibernate之前自动设置bean值(列)?

我可以在服务层编写代码,每次设定日期的对象保存/手动更新...

我也有一个DAO层。每个Dao都从包含save()方法的支持类扩展而来。我可以使用反射并在此方法内设置值。我可以检查该类是否有名为“modicationDate”的字段,如果有,则将其设置为新的Date()。

有没有比这更好的方法?或者使用我的通用save()方法是最好的方法?这是我想要强健的事情,不必再为此担心。我会很高兴知道,通过简单地制作一个“修改日期”属性,这将从这一点自动照顾我。使用save()方法似乎是最好的地方,但如果有更好的方法,我想知道它。

回答

5

结帐event listeners

@Entity 
@EntityListeners(class=LastUpdateListener.class) 
public class Cat { 
    @Id private Integer id; 
    private String name; 
    private Calendar dateOfBirth; 
    @Transient private int age; 
    private Date lastUpdate; 

    @PostLoad 
    public void calculateAge() { 
     ... 
    } 
} 

public class LastUpdateListener { 
    /** 
    * automatic property set before any database persistence 
    */ 
    @PreUpdate 
    @PrePersist 
    public void setLastUpdate(Cat o) { 
     o.setLastUpdate(new Date()); 
    } 
} 
+0

那么,这是不是太有用到我,因为我不使用JPA(我没有指定),但它并告诉我去寻找“事件监听器“这足以让我找到我需要的东西;)谢谢! – egervari 2011-04-24 14:44:03