0
知られているように、Hibernateはダーティチェックを使用します。つまり、DB内では、プログラムのエンティティで変更されたフィールドのみが変更されます。どのフィールドが変更されたかを知るには?古い値を取得できますか?Hibernateのダーティチェック
知られているように、Hibernateはダーティチェックを使用します。つまり、DB内では、プログラムのエンティティで変更されたフィールドのみが変更されます。どのフィールドが変更されたかを知るには?古い値を取得できますか?Hibernateのダーティチェック
org.hibernate.event.spi
に一連のイベントリスナーSPIがあり、SessionFactory
の構築中に実装して登録することができます。ここで、あなたが求めている状態情報を取得できます。たとえば、
public class MyPreUpdateEventListener implements PreUpdateEventListener {
@Override
public boolean onPreUpdate(PreUpdateEvent event) {
Object[] newState = event.getState();
Object[] oldState = event.getOldState();
/* from this point, you'd need to determine the differences yourself */
}
}
いいえ、それはありません。少なくともデフォルトではありません。そして、それはエンティティの古い状態を公開しません。あなたがそれをする必要がある場合は、あなた自身でそれを行う必要があります。 –
@JBNizet古い状態は、イベントリスナーを介して使用できます。 – Naros