是否可以为Hibernate Session和普通JDBC查询使用单个事务边界。 ? 两者的数据库和数据源配置相似。
答案 0 :(得分:2)
是。使用HibernateTransactionManager
。以下内容取自javadoc
此实现适用于仅使用的应用程序 Hibernate用于事务性数据访问,但它也支持直接 事务中的数据源访问(即纯JDBC代码工作 使用相同的DataSource)。这允许混合访问的服务 Hibernate(包括事务缓存)和使用的服务 普通的JDBC(不知道Hibernate)!应用代码需求 坚持使用与之相同的简单连接查找模式 DataSourceTransactionManager(即DataSourceUtils.getConnection或 通过TransactionAwareDataSourceProxy)。
请注意,能够为plain注册DataSource的Connection JDBC代码,这个实例需要知道DataSource(参见 的setDataSource)。给定的DataSource显然应该匹配一个 由给定的SessionFactory使用。要实现此目的,请将两者配置为 相同的JNDI DataSource,或者最好用Session创建SessionFactory LocalSessionFactoryBean和一个本地DataSource(将是 由此事务管理器自动检测。)