Spring提供了許多內(nèi)置事務(wù)管理器實現(xiàn):
- DataSourceTransactionManager : 位于org.springframework.jdbc.datasource包中,數(shù)據(jù)源事務(wù)管理器,提供對單個javax.sql.DataSource事務(wù)管理,用于Spring JDBC抽象框架、iBATIS或MyBatis框架的事務(wù)管理;
- JdoTransactionManager : 位于org.springframework.orm.jdo包中,提供對單個javax.jdo.PersistenceManagerFactory事務(wù)管理,用于集成JDO框架時的事務(wù)管理;
- JpaTransactionManager : 位于org.springframework.orm.jpa包中,提供對單個javax.persistence.EntityManagerFactory事務(wù)支持,用于集成JPA實現(xiàn)框架時的事務(wù)管理;
- HibernateTransactionManager : 位于 org.springframework.orm.hibernate3包中,提供對單個org.hibernate.SessionFactory事務(wù) 支持,用于集成Hibernate框架時的事務(wù)管理;該事務(wù)管理器只支持Hibernate3+版本,且Spring3.0+版本只支持 Hibernate 3.2+版本;
- JtaTransactionManager : 位于org.springframework.transaction.jta包中,提供對分布式事務(wù)管理的支持,并將事務(wù)管理委托給Java EE應(yīng)用服務(wù)器事務(wù)管理器;
- OC4JjtaTransactionManager : 位于org.springframework.transaction.jta包中,Spring提供的對OC4J10.1.3+應(yīng)用服務(wù)器事務(wù)管理器的適配器,此適配器用于對應(yīng)用服務(wù)器提供的高級事務(wù)的支持;
- WebSphereUowTransactionManager : 位于org.springframework.transaction.jta包中,Spring提供的對WebSphere 6.0+應(yīng)用服務(wù)器事務(wù)管理器的適配器,此適配器用于對應(yīng)用服務(wù)器提供的高級事務(wù)的支持;
- WebLogicJtaTransactionManager : 位于org.springframework.transaction.jta包中,Spring提供的對WebLogic 8.1+應(yīng)用服務(wù)器事務(wù)管理器的適配器,此適配器用于對應(yīng)用服務(wù)器提供的高級事務(wù)的支持。
一、 聲明對本地事務(wù)的支持:
a) JDBC 及iBATIS 、MyBatis 框架事務(wù)管理器
?
- <bean?id= "txManager" ? class = "org.springframework.jdbc.datasource.DataSourceTransactionManager" >??
- ????<property?name= "dataSource" ?ref= "dataSource" />??
- </bean>??
?
通過dataSource屬性指定需要事務(wù)管理的單個javax.sql.DataSource對象。
b) Jdo 事務(wù)管理器
?
- <bean?id= "txManager" ? class = "org.springframework.orm.jdo.JdoTransactionManager" >??
- ????<property?name= "persistenceManagerFactory" ?ref= "persistenceManagerFactory" />??
- </bean>??
?
通過persistenceManagerFactory屬性指定需要事務(wù)管理的javax.jdo.PersistenceManagerFactory對象。
?
c) Jpa 事務(wù)管理器
?
- <bean?id= "txManager" ? class = "org.springframework.orm.jpa.JpaTransactionManager" >??
- ????<property?name= "entityManagerFactory" ?ref= "entityManagerFactory" />??
- </bean>??
?
通過entityManagerFactory屬性指定需要事務(wù)管理的javax.persistence.EntityManagerFactory對象。
還需要為entityManagerFactory對象指定jpaDialect屬性,該屬性所對應(yīng)的對象指定了如何獲取連接對象、開啟事務(wù)、關(guān)閉事務(wù)等事務(wù)管理相關(guān)的行為。
?
- <bean?id= "entityManagerFactory" ? class = "org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" >??
- ????????……??
- ????????<property?name= "jpaDialect" ?ref= "jpaDialect" />??
- </bean>??
- <bean?id= "jpaDialect" ? class = "org.springframework.orm.jpa.vendor.HibernateJpaDialect" />??
?
?
d) Hibernate 事務(wù)管理器
?
- <bean?id= "txManager" ? class = "org.springframework.orm.hibernate3.HibernateTransactionManager" >??
- ????<property?name= "sessionFactory" ?ref= "sessionFactory" />??
- </bean>??
通過entityManagerFactory屬性指定需要事務(wù)管理的org.hibernate.SessionFactory對象。
?
?
二、 Spring 對全局事務(wù)的支持:
?
a) Jta 事務(wù)管理器
?
?
- <beans?xmlns= "http://www.springframework.org/schema/beans" ??
- ????xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" ??
- ????xmlns:jee= "http://www.springframework.org/schema/jee" ??
- ????xsi:schemaLocation="??
- ???????http: //www.springframework.org/schema/beans ??
- ???????http: //www.springframework.org/schema/beans/spring-beans-3.0.xsd ??
- ???????http: //www.springframework.org/schema/jee ??
- ???????http: //www.springframework.org/schema/jee/spring-jee-3.0.xsd"> ??
- ???
- ??<jee:jndi-lookup?id= "dataSource" ?jndi-name= "jdbc/test" />??
- ??<bean?id= "txManager" ? class = "org.springframework.transaction.jta.JtaTransactionManager" >??
- ????<property?name= "transactionManagerName" ?value= "?java:comp/TransactionManager" />??
- ??</bean>??
- </beans>??
?
“dataSource”Bean表示從JNDI中獲取的數(shù)據(jù)源,而txManager是JTA事務(wù)管理器,其中屬性transactionManagerName指定了JTA事務(wù)管理器的JNDI名字,從而將事務(wù)管理委托給該事務(wù)管理器。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
