国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
spring 事務(wù)管理(Transaction) 例子
   
    傳統(tǒng)上, J2EE開發(fā)者有兩種事務(wù)管理選擇,全局和本地事務(wù)。Spring框架對事務(wù)管理的支持極大地改變傳統(tǒng)上認為J2EE應(yīng)用需要應(yīng)用服務(wù)器。這種改變不單是僅僅為了通過EJB來使用生命式事務(wù)而使用應(yīng)用服務(wù)器。事實上,即使你的應(yīng)用服務(wù)器有強大的JTA功能,Spring框架的聲明式事務(wù)提供了比EJB CMT(聲明式事務(wù))更強大,更高效的編程模型。一般來說,只有支持多個事務(wù)資源,才會需要應(yīng)用服務(wù)器的JTA功能,而大多數(shù)應(yīng)用不需要能夠處理跨多種資源。最重要的一點,使用Spring,你可以選擇何時把你的應(yīng)用遷移到全功能的應(yīng)用服務(wù)器。使用Spring不需要像以前一樣用編碼實現(xiàn)本地事務(wù)代替EJB CMT或JTA,現(xiàn)在只需要改配置問價,而不必改代碼。

一. Spring事務(wù)管理

  1. Spring 編程式事務(wù)管理(programmatic transaction management)
     
   DefaultTransactionDefinition def = new DefaultTransactionDefinition(); 



TransactionStatus status = transactionManager.getTransaction(def);



try {



JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);



jdbcTemplate.update("INSERT INTO USER VALUES('Spring008', 'caterpillar', 'M', 29)");



jdbcTemplate.update("INSERT INTO USER VALUES('Spring009', 'momor', 'F', 26)");



jdbcTemplate.update("INSERT INTO USER VALUES('Spring010, 'beckyday', 'F', 35)");







} catch (DataAccessException ex) {



transactionManager.rollback(status); // 也可以執(zhí)行status.setRollbackOnly();



throw ex;



}



transactionManager.commit(status);







見:http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2398




  2. Spring宣告式事務(wù)管理(declarative transaction management)主要是在spring的配置文件中設(shè)置

    
    <bean id="userDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 



<property name="transactionManager">



<ref bean="transactionManager"/>



</property>



<property name="target">



<ref bean="userDAO"/>



</property>



<property name="transactionAttributes">



<props>



<prop key="insert*">PROPAGATION_REQUIRED</prop>



</props>



</property>



</bean>



見:http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2402







二. Spring的@Transcation的例子







1. class 中







@Component //注釋就可以將該類定義了 Spring 容器中的 Bean







public Class UserDaoImpl implements IUserDao {







@Override



//標志updateUsers()為Transactional



@Transactional(



propagation = Propagation.REQUIRED,



isolation = Isolation.DEFAULT,



rollbackFor = Exception.class



)



public void updateUsers(List<User> users){



for(User user :users){



//邏輯



}







}



}







注意: 事務(wù)的屬性和基本概念



Required : 如果在一個事務(wù)中調(diào)用,就將該方法加到此事務(wù)中,如果沒有啟動事務(wù),就創(chuàng)建新事務(wù)



RequiredNew : 不管當前有沒有事務(wù),都啟動新事務(wù),如果有,會被掛起,直到此方法結(jié)束



NotSupported : 不能在事務(wù)中執(zhí)行此方法,如果有事務(wù),會被掛起,直到此方法結(jié)束



Supports : 如果有當前事務(wù),此方法回加到當前事務(wù),如果沒有,容器不會啟動新事務(wù)



Mandatory : 必須在事務(wù)中執(zhí)行此方法,否則會拋出異常 : TransactionRequiredException



Never : 必須不在事務(wù)中調(diào)用此方法,否則拋出RemoteException(遠程調(diào)用)或EJBException(本地調(diào)用)
        2.spring配置文件加入:
           .....................
            <tx:annotation-driven/>
          .....................

      注意: webSerivces 是不支持事務(wù)的,如果使用事務(wù),必須在下層的Object中實現(xiàn),例如在Service層或者是Dao層實現(xiàn)。
另外: 
http://www.ibm.com/developerworks/cn/java/j-ts1.html
http://www.javaworld.com.tw/confluence/display/opensrc/Spring
http://www.redsaga.com/spring_ref/2.0/html/transaction.html#transaction-declarative
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
SpringBoot整合分布式事務(wù),JTA+Atomikos實現(xiàn)多數(shù)據(jù)源
TransactionManager
在Spring中實現(xiàn)事務(wù)掛起
深入spring事務(wù)管理
Sping聲明式事務(wù)配置管理方法
spring Transaction Manager和hibernate session 吐血經(jīng)驗談
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服