セッションBeanと同様に、アノテーション付きライフサイクルコールバックメソッドも別のクラスに配置することが可能で、@EntityListener
アノテーションを使ってそのクラスを指定されたBeanのための「コールバックリスナー」クラスとして指定することができます。
@Entity
@EntityListener(TimedRecordEntityListener.class)
public class TimedRecord extends Record {
// ... ...
}
TimedRecordEntityListener
内のコールバックメソッドはTimedRecord
オブジェクトを引数として取ります。コンテナは、実行時にこのコールバックイベントの原因となるTimedRecord
オブジェクトを渡します。
public class TimedRecordEntityListener {
@PrePersist
public prepareTimestamp (TimedRecord rec) {
// ... ...
}
@PreUpdate
public updateTimestamp (TimedRecord rec) {
// ... ...
}
}