AbstractPlatformTransactionManagerクラスでは、メソッドgetTransaction()が を呼び出しますdoGetTransaction()。ただし、このメソッドの実装はどこにも見つかりません。その実装はどこにあり、何をしますか?
1 に答える
の実装はdoGetTransaction、具体的なトランザクション マネージャーの実装にあります。で次のように定義されたトランザクションマネージャーがある場合spring-config.xml:
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
...
</bean>
doGetTransactioninの具体的な実装が得られますHibernateTransactionManager。
実装は通常、既存のdoGetTransactionトランザクションを探し、返されたトランザクション オブジェクトに対応する状態を格納します。
以下のステートメントは、HibernateTransactionManager#doGetTransaction doc からコピーしたものです。
返されるオブジェクトは通常、具体的なトランザクション マネージャーの実装に固有であり、対応するトランザクション状態を変更可能な方法で保持します。このオブジェクトは、直接または DefaultTransactionStatus インスタンスの一部として、他のテンプレート メソッド (doBegin や doCommit など) に渡されます。
返されるオブジェクトには、既存のトランザクションに関する情報が含まれている必要があります。つまり、トランザクション マネージャーでの現在の getTransaction 呼び出しの前に既に開始されているトランザクションです。したがって、doGetTransaction 実装は通常、既存のトランザクションを探し、返されたトランザクション オブジェクトに対応する状態を格納します。