2

是否可以为 Hibernate Session 和普通的 JDBC 查询使用单个事务边界。? 两者的数据库和数据源配置相似。

4

1 回答 1

2

是的。使用HibernateTransactionManager. 以下摘自其javadoc

此实现适用于仅使用 Hibernate 进行事务数据访问的应用程序,但它也支持事务中的直接数据源访问(即使用相同数据源的纯 JDBC 代码)。这允许混合访问 Hibernate 的服务(包括事务缓存)和使用普通 JDBC 的服务(不知道 Hibernate)!应用程序代码需要遵循与 DataSourceTransactionManager 相同的简单连接查找模式(即 DataSourceUtils.getConnection 或通过 TransactionAwareDataSourceProxy)。

请注意,为了能够为纯 JDBC 代码注册 DataSource 的 Connection,此实例需要知道 DataSource(请参阅 setDataSource)。给定的 DataSource 显然应该与给定的 SessionFactory 使用的相匹配。要实现这一点,请将两者配置为相同的 JNDI 数据源,或者最好使用 LocalSessionFactoryBean 和本地数据源(将由该事务管理器自动检测)创建 SessionFactory。

于 2012-11-12T20:49:28.000 回答