2011-04-24 43 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