一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

spring 事務管理(Transaction) 例子

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

一. Spring事務管理

  1. Spring 編程式事務管理(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./confluence/pages/viewpage.action?pageId=2398




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

    
    <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./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){



//邏輯



}







}



}







注意: 事務的屬性和基本概念



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



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



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



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



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



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

      注意: webSerivces 是不支持事務的,如果使用事務,必須在下層的Object中實現,例如在Service層或者是Dao層實現。
另外: 
http://www.ibm.com/developerworks/cn/java/j-ts1.html
http://www./confluence/display/opensrc/Spring
http://www./spring_ref/2.0/html/transaction.html#transaction-declarative

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲最新中文字幕一区| 国产自拍欧美日韩在线观看| 久热青青草视频在线观看| 欧美日本亚欧在线观看| 福利专区 久久精品午夜| 亚洲最大福利在线观看| 成人综合网视频在线观看| 国产精品内射视频免费| 女人精品内射国产99| 字幕日本欧美一区二区| 久久久精品区二区三区| 欧美熟妇喷浆一区二区| 国产午夜福利在线免费观看| 国产精品一区二区有码| 久久福利视频这里有精品| 免费在线观看欧美喷水黄片| 中文字幕一区二区熟女| 色婷婷日本视频在线观看| 熟妇久久人妻中文字幕| 国产av精品高清一区二区三区| 国产精品99一区二区三区| 经典欧美熟女激情综合网| 色婷婷视频国产一区视频| 国产精品亚洲二区三区| 国产精品乱子伦一区二区三区| 日韩成人动作片在线观看| 精品久久久一区二区三| 微拍一区二区三区福利| 中文字幕精品人妻一区| 国产不卡免费高清视频| 亚洲综合一区二区三区在线| 日本午夜免费啪视频在线| 激情中文字幕在线观看| 女生更色还是男生更色| 狠狠做深爱婷婷久久综合| 日韩特级黄片免费在线观看| 九九热在线视频精品免费| 亚洲一区二区欧美在线| 日本办公室三级在线观看| 免费一区二区三区少妇| 大香蕉精品视频一区二区|