JPAアノテーション、@PostUpdateなど
EbeanはJPAアノテーション(@PostLoad、@PostPersist、@PostRemove、@PostUpdate、@PrePersist、@PreRemove、@PreUpdate)をサポートしています。
例
import javax.persistence.PostLoad;
import javax.persistence.PostPersist;
import javax.persistence.PostRemove;
import javax.persistence.PostUpdate;
import javax.persistence.PrePersist;
import javax.persistence.PreRemove;
import javax.persistence.PreUpdate;
...
@Entity
public class Customer {
@Id
Long id;
String name;
@Version
Long version;
@PrePersist
public void prePersist1() {
...
}
@PostPersist
public void postPersist1() {
...
}
@PreUpdate
public void preUpdate1() {
...
}
@PostUpdate
public void postUpdate1() {
...
}
@PreRemove
public void preRemove1() {
...
}
@PostRemove
public void postRemove1() {
...
}
@PostLoad
public void postLoad1() {
...
}
JPAアノテーションの使用には制限があり、アップデートで実際に変更されたプロパティや基盤のトランザクションへのアクセスなどがわかりません。
これらの制限に達した場合は、BeanPersistControllerを使用します。
BeanPersistController
エンティティのイベントをリッスンするには、BeanPersistControllerを使用することもできます。これにより、基盤のトランザクションだけでなく、アップデートで変更された特定のプロパティにもアクセスできます。
BeanPersistControllerは、デフォルトのBean永続化メカニズムを拡張またはオーバーライドするために使用されます。
Object extraBeanToSave = ...;
Transaction t = request.getTransaction();
Database database = request.database();
database.save(extraBeanToSave, t);
BeanPersistListener
BeanPersistListener
は、BeanPersistControllerのpostXXXメソッドとは2つの主要な点で異なります。
BeanPersistListenerは正常にコミットされたイベントのみを確認します。BeanControllerのpreメソッドとpostメソッドは、コミットまたはロールバックの前に実行され、それらのメソッドは後からロールバックされるイベントを確認します。
BeanPersistListenerはバックグラウンドスレッドで実行され、BeanControllerメソッドのように実際の永続化の応答時間に影響を与えません。
BeanQueryAdapter
BeanQueryAdapterを使用して、実行前にクエリを変更します。通常、クエリのフィルタリングを有効にするために、クエリに式を追加します(例:クエリを実行中のユーザーに基づくクエリパーティション)。