【发布时间】:2012-11-12 20:42:08
【问题描述】:
是否可以为 Hibernate Session 和普通的 JDBC 查询使用单个事务边界。 ? 两者的数据库和数据源配置相似。
【问题讨论】:
-
@RomanC 这很常见。
标签: java spring hibernate jdbc transactions
是否可以为 Hibernate Session 和普通的 JDBC 查询使用单个事务边界。 ? 两者的数据库和数据源配置相似。
【问题讨论】:
标签: java spring hibernate jdbc transactions
是的。使用HibernateTransactionManager。以下摘自其javadoc
此实现适用于仅使用 Hibernate 用于事务数据访问,但它也支持直接 事务中的数据源访问(即纯 JDBC 代码工作 具有相同的数据源)。这允许混合访问的服务 Hibernate(包括事务缓存)和使用的服务 纯 JDBC(不知道 Hibernate)!应用代码需求 坚持与使用相同的简单连接查找模式 DataSourceTransactionManager(即 DataSourceUtils.getConnection 或 通过 TransactionAwareDataSourceProxy)。
请注意,为了能够注册一个 DataSource 的 Connection for plain JDBC 代码,此实例需要知道 DataSource(请参阅 集数据源)。给定的 DataSource 显然应该与那个匹配 由给定的 SessionFactory 使用。为此,请将两者配置为 相同的 JNDI 数据源,或者最好使用创建 SessionFactory LocalSessionFactoryBean 和一个本地数据源(它将是 由该事务管理器自动检测到)。
【讨论】: