[jpa:9] Re: Hibernate EntityManagerの使用感想

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2007年 4月 19日 (木) 10:58:04 JST


中村(taedium)です。

> 例えば、アップデート時にロード時のEntityの状態と変更されたEntityの状態
> を比較して独自の処理を行ったりとか、
> MergeEventListenerを使って、merge処理のときにTransientなプロパティを
> 引数のEntityから戻り値のEntityにコピーしたり・・・みたいな処理が
> 可能です。
> JPA標準のEventでは、対象Entity以外の引数が無いので
> ロード時の状態と現在の状態を比較したりとか、
> merge前と後の状態を比較したり等の処理は出来ません。

ありがとうございます。

なるほど、Listenerの処理で使える情報量が違うということですね。
シグネチャでいうと次のような違いになるでしょうか。

■HibernateのListenerのメソッド例
public boolean onPreUpdate(PreUpdateEvent event);

■JPAのListenerのメソッド例
@PreUpdate
public void onPreUpdate(Object entity);

PreUpdateEventには変更前の値やHibernate固有のオブジェクトなど
いろいろ詰まっていますね。
たしかに、HibernateのListenerのほうが便利そうです。

> EventListenerの登録はpersistence.xmlのpropertyを使うので
> EntityクラスにはHibernate独自の記述を書く必要も無く
> 汎用性を失わないままカスタマイズが可能なのも利点でしょうか。

persistence.xmlで設定できるんですか。
これは知りませんでした。
-- 
Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>



jpa メーリングリストの案内