在持久化Hibernate之前自动设置bean值(列)?

ege*_*ari 0 java entity hibernate

在Hibernate持久化实体之前,是否有一种优雅的方法来设置bean值(列)?基本上我有一个名为"modification_date"的字段.它出现在一堆实体上.每当更新/修改其中一个实体时,我基本上都喜欢自动设置该字段.

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

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

有比这更好的方法吗?或者使用我的泛型save()方法是最好的方法?这是我想要强大的东西,而不必再担心它.我很高兴知道通过简单地创建一个"modificationDate"属性,从这一点开始我将自动处理这个问题.使用save()方法似乎是最好的地方,但如果有更好的方法,我想知道它.

Mik*_*nty 5

结帐事件监听器:

@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() );
    }
}
Run Code Online (Sandbox Code Playgroud)