跨Hibernate会话和普通jdbc的单个事务

时间:2012-11-12 20:42:09

标签: java spring hibernate jdbc transactions

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

1 个答案:

答案 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(将是   由此事务管理器自动检测。)