當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring事务管理器分类
生活随笔
收集整理的這篇文章主要介紹了
Spring事务管理器分类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Spring并不直接管理事務,事實上,它是提供事務的多方選擇。你能委托事務的職責給一個特定的平臺實現,比如用JTA或者是別的持久機制。Spring的事務管理器可以用下表表示:
3.1 JDBC事務 如果你直接使用JDBC作為持久方案,DataSourceTransactionManager將會為你管理事務的邊界。為了能使用DataSourceTransactionManager,我們把下面的XML加到上下文的定義中:
<bean id="transactionManager" class="org.springframework.jdbc.
Datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
注意:dataSource的屬性設置引用一個叫dataSource的BEAN,dataSource可能是一個javax.sql.DataSource bean,它在上下文中已經定義好了。 3.2 Hibernate事務 如果你使用Hibernate作為持久層,你將會使用HibernateTransactionManager,請在應用的上下文申明如下:
<bean id="transactionManaager" class="org.springframework.
Orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
sessionFacoty 的屬性和Hibernate的SessionFactory組合在一塊兒。HibernateTransactionManager委托事務管理給一個 net.sf.hibernate.Transactioin事例,它從Hibernate的會話中獲得。當一個事務成功結束時, HibernateTransactionManager會調用Transaction的commit()方法。相似的,一個失敗的事務將會調用 rollback()去回滾。 3.3 JDO事務 可能你不喜歡JDBC 和Hibernate,你可以選擇JDO去實現你的持久層。如果是這樣的話,你可以用JdoTransctionManager,你可以在你的上下文中如下申明:
<bean id="transactionManager"
Class="org.springframework.orm.jdo.JdoTransactioinManager:>
<property name="persistenceManagerFactory">
<ref bean="persistenceManagerFactory"/>
</property>
</bean>
為了使用JdoTransctionManager,你需要組合一個具有persistenceManagerFactory 屬性的javax.jdo.PersistenceManagerFactory。
其實,JdoTransactionManager和事務對象一起工作,它是從JDO的持久管理器中獲得。一個成功的事務會調用commit()方法,而一個失敗的事務會調用rollback()方法。 3.4 JTA事務: 如果你上面所有的事務管理器都不符合你的需要,,或者你的應用是多資源交錯的事務,那么.你可以使用JTA的事務管理器 JTA事務(Java Transaction API)是J2EE規范中有關事務的標準。它是容器級別的事務,只能運行在J2EE服務器中。它的最大優勢是可以支持分布式的事務,如果系統采用的是分布式的數據庫,那么只能選擇JTA管理EntityManager事務。
<bean id="transactionManager" class="org.springframewrok..
Transaction.jtaTransactionmanager">
<property name="transactionManager">
<value>java:/TransactionManager</valure>
</property>
</bean>
JtaTransactionManager 委托事務管理給JTA的實現.JTA定義了一系列的標準接口;能協調事務,應用和一個或多個數據源. 在這之中, transactioinManageName屬性指向JTA事務管理器. 這個事務管理器能在JNDI中找到. JtaTransactionManager, javax.transaction.UserTransaction和javax.transaction.TransactionManager對象在一起工作. 所有的事務管理委托給它們完成. 一個成功的事務將會被提交,通過調用UserTransaction.commit()方法,相反,一個失敗的事務會調用UserTransaction 的rollback()方法. 本文轉自:http://blog.csdn.net/xiancaifu/article/details/6639290
?
| 事務管理器的實例 | 目標 |
| Org.springframwork.jdbc.datasource.DataSourceTransactionManager | 用JDBC的 DataSource 去管理事務 |
| Org.springframwork.orm.hibernate.HibernateTransactionManager | 當持久機制是Hibernate時的事務管理器 |
| Org.springframework.orm.jdoTransactionManager | 當持久機制是JDO時的事務管理器 |
| Org.springframework.transaction.jta.JtaTransactionManager | 用JTA管理事務 |
| Org.springframwork.orm.ojb.PersistenceBrokerTransactionManager | 當持久機制是apache的OJB時的事務管理器 |
<bean id="transactionManager" class="org.springframework.jdbc.
Datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
注意:dataSource的屬性設置引用一個叫dataSource的BEAN,dataSource可能是一個javax.sql.DataSource bean,它在上下文中已經定義好了。 3.2 Hibernate事務 如果你使用Hibernate作為持久層,你將會使用HibernateTransactionManager,請在應用的上下文申明如下:
<bean id="transactionManaager" class="org.springframework.
Orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
sessionFacoty 的屬性和Hibernate的SessionFactory組合在一塊兒。HibernateTransactionManager委托事務管理給一個 net.sf.hibernate.Transactioin事例,它從Hibernate的會話中獲得。當一個事務成功結束時, HibernateTransactionManager會調用Transaction的commit()方法。相似的,一個失敗的事務將會調用 rollback()去回滾。 3.3 JDO事務 可能你不喜歡JDBC 和Hibernate,你可以選擇JDO去實現你的持久層。如果是這樣的話,你可以用JdoTransctionManager,你可以在你的上下文中如下申明:
<bean id="transactionManager"
Class="org.springframework.orm.jdo.JdoTransactioinManager:>
<property name="persistenceManagerFactory">
<ref bean="persistenceManagerFactory"/>
</property>
</bean>
為了使用JdoTransctionManager,你需要組合一個具有persistenceManagerFactory 屬性的javax.jdo.PersistenceManagerFactory。
其實,JdoTransactionManager和事務對象一起工作,它是從JDO的持久管理器中獲得。一個成功的事務會調用commit()方法,而一個失敗的事務會調用rollback()方法。 3.4 JTA事務: 如果你上面所有的事務管理器都不符合你的需要,,或者你的應用是多資源交錯的事務,那么.你可以使用JTA的事務管理器 JTA事務(Java Transaction API)是J2EE規范中有關事務的標準。它是容器級別的事務,只能運行在J2EE服務器中。它的最大優勢是可以支持分布式的事務,如果系統采用的是分布式的數據庫,那么只能選擇JTA管理EntityManager事務。
<bean id="transactionManager" class="org.springframewrok..
Transaction.jtaTransactionmanager">
<property name="transactionManager">
<value>java:/TransactionManager</valure>
</property>
</bean>
JtaTransactionManager 委托事務管理給JTA的實現.JTA定義了一系列的標準接口;能協調事務,應用和一個或多個數據源. 在這之中, transactioinManageName屬性指向JTA事務管理器. 這個事務管理器能在JNDI中找到. JtaTransactionManager, javax.transaction.UserTransaction和javax.transaction.TransactionManager對象在一起工作. 所有的事務管理委托給它們完成. 一個成功的事務將會被提交,通過調用UserTransaction.commit()方法,相反,一個失敗的事務會調用UserTransaction 的rollback()方法. 本文轉自:http://blog.csdn.net/xiancaifu/article/details/6639290
轉載于:https://www.cnblogs.com/I-will-be-different/p/3589989.html
總結
以上是生活随笔為你收集整理的Spring事务管理器分类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《转》IIS中配置通配符应用程序映射
- 下一篇: android第八步查看与输出日志信息