我有两个数据库使用相同的方案。
我的 hibernate 3.2/Spring 3 应用程序为每个数据库一个数据源(通过 jndi),每个数据源一个事务管理器(HibernateTransactionManager)。
问题:我可以使用会话工厂的一个实例,它应该使用与当前事务关联的数据源吗?
假设有以下方法。
@Transactional(readOnly = true, value = "tmDBOne")
public String db1() throws IOException {
dao.execute(); // dao uses injected session factory
}
@Transactional(readOnly = true, value = "tmDBTwo")
public void db2() throws IOException {
dao.execute(); // dao uses injected session factory
}
交易经理:
<bean id="tmDBOne"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="dataSource" ref="dsDBOne/>
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="tmDBTwo"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="dataSource" ref="dsDBTwo/>
<property name="sessionFactory" ref="sessionFactory"/>
</bean>