@DeprecatedSE public interface HibernateCallback<T>
HibernateTemplate の実行メソッドで使用され、多くの場合、メソッド実装内の匿名クラスとして使用されます。一般的な実装では、Session.load/find/update を呼び出して、永続オブジェクトに対していくつかの操作を実行します。また、JDBC 接続で動作する Hibernate の Session.connection() を介して直接 JDBC 操作を実行することもできます。Hibernate は変更されていないプレーンな Java オブジェクトで動作し、ロード時に作成されたコピーを介してダーティ検出を実行することに注意してください。返されたオブジェクトは、Web GUI での表示など、アクティブな Hibernate セッションの外部で問題なく使用できます。インスタンスは ID を保持しているため、GUI から戻ったときに更新する場合など、このようなインスタンスを新しいセッションに再関連付けするのは簡単です。ただし、同じセッションでデータベースからバージョンがすでにロードされないように、できるだけ早く再関連付けを行う必要があります。
HibernateTemplate, HibernateTransactionManager| 修飾子と型 | メソッドと説明 |
|---|---|
T | doInHibernate(Session session) 使用すべきではありません。 アクティブな Hibernate Session を使用して HibernateTemplate.execute によって呼び出されます。 |
T doInHibernate(Session session) throws HibernateException, SQLExceptionSE
Session を使用して HibernateTemplate.execute によって呼び出されます。Session のアクティブ化やクローズ、トランザクションの処理について気にする必要はありません。スレッドにバインドされた Hibernate トランザクション (HibernateTransactionManager によって開始) なしで呼び出された場合、コードは、トランザクションセマンティクスを使用して、基盤となる JDBC 接続で実行されます。Hibernate が JTA 対応の DataSource を使用するように構成されている場合、JTA トランザクションがアクティブであれば、JDBC 接続とコールバックコードはトランザクションになります。
コールバック内で作成された結果オブジェクト、つまりドメインオブジェクトまたはドメインオブジェクトのコレクションを返すことができます。スローされたカスタム RuntimeException はアプリケーション例外として扱われ、テンプレートの呼び出し元に伝播されます。
session - アクティブな Hibernate セッション null HibernateException - Hibernate API によってスローされた場合 SQLExceptionSE - Hibernate 公開 JDBC API によってスローされた場合 HibernateTemplate.execute(org.springframework.orm.hibernate3.HibernateCallback<T>), HibernateTemplate.executeFind(org.springframework.orm.hibernate3.HibernateCallback<?>)