セッション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) {
// ... ...
}
}