您的位置:首页 > 编程语言 > Java开发

spring 同时配置hibernate and jdbc 事务

2017-05-17 16:18 621 查看
在项目中同时用到了JDBC和Hibernate,分别配置了各自的事务,同时配置了不同的tx:annotation-driven。

但是在实际使用中,只有配置在前的tx:annotation-driven起了作用,另外一个tx:annotation-driven不起作用。

 
 ============
给一个TransactionProxyFactoryBean(使用DataSourceTransactionManager)配置的service加上@Transactional
(用HibernateTransactionManager声明的),则会使用DataSourceTransactionManager事务
 
===============
http://zhangxiaoming.iteye.com/blog/307670

spring 中 Hibernate 事务和JDBC事务嵌套问题

JDBCHibernateSpring配置管理ORM

最近开发中,遇到了这样一个问题。 

1.系统中,事务是有spring管理的。 

2.系统中,即用到了JDBC,又用到了Hibernate。 

3.spring管理了jdbc事务,也管理了Hibernate事务。 

如上3点所述,存在这样的情况: 

配置了jdbc事务的service,注入了配置了hibernate事务的service。这时,执行的时候,系统就会抛出异常: 
org.springframework.transaction.IllegalTransactionStateException: Pre-bound JDBC connection found - HibernateTransactionManager does not support running within DataSourceTransactionManager if told to manage the DataSource itself. It
is recommended to use a single HibernateTransactionManager for all transactions on a single DataSource, no matter whether Hibernate or JDBC access.

但是,由配置了hibernate事务的service,注入了配置了jdbc事务的service。就能正常运行。 

不知道大家有没有遇到过类似的问题。一起讨论一下。 
================
http://www.iteye.com/topic/37707
最近摸索了一下Hibernate与JDBC(iBATIS)事务整合问题,算是有点收获,写出来和大家讨论一下吧。。。
一般大家都会使用Spring声明型事务 transactionAttributes 为 PROPAGATION_REQUIRED
Hibernate 使用 HibernateTransactionManager 、JDBC(iBATIS) 使用 DataSourceTransactionManager
当需要将它们整合到一个事务中的时候
普通的做法是配置统一的DataSource, Hibernate与JDBC(iBATIS) 都使用HibernateTransactionManager 
坛子里有篇帖子已经详细论述了这种整合方案 http://www.iteye.com/topic/11063?page=2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: