在AbstractPlatformTransactionManager
课程中,getTransaction()
方法调用doGetTransaction()
。但是,我无法在任何地方找到此方法的实现。它的实施在哪里以及它做了什么?
答案 0 :(得分:1)
您将在具体的事务管理器实现中找到doGetTransaction
的实现。如果您的事务管理器在spring-config.xml
:
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
...
</bean>
您将在doGetTransaction
中获得HibernateTransactionManager
的具体实施。
doGetTransaction
实现通常会查找现有事务并在返回的事务对象中存储相应的状态。
以下语句是从HibernateTransactionManager#doGetTransaction doc:
复制的返回的对象通常是特定于具体的 事务管理器实现,承载相应的事务 以可修改的方式陈述。这个对象将被传递给 其他模板方法(例如doBegin和doCommit),直接或 作为DefaultTransactionStatus实例的一部分。
返回的对象应包含有关任何现有的信息 事务,即之前已经启动的事务 事务管理器上的当前getTransaction调用。 因此,doGetTransaction实现通常会寻找 现有的事务和存储在返回的对应状态 交易对象。