摘要:如果代碼出現(xiàn)異常調(diào)用對(duì)象的將事務(wù)回滾。否則,如果方法正常返回,事務(wù)將被提交。
調(diào)用webservice接口,數(shù)據(jù)不回滾問(wèn)題
使用cxf+spring框架開(kāi)發(fā)webservice接口,在開(kāi)發(fā)一個(gè)具有保存數(shù)據(jù)的接口功能時(shí),如果數(shù)據(jù)發(fā)生了異常,對(duì)service層無(wú)論使用了xml配置聲明式事務(wù)管理還是使用了使用@Transactional注解聲明式事務(wù)管理,數(shù)據(jù)均不會(huì)回滾;在debug代碼和查詢相關(guān)資料后,個(gè)人覺(jué)得數(shù)據(jù)不會(huì)回滾的原因:調(diào)用webservice接口時(shí),發(fā)生的異常并沒(méi)有在service被spring捕獲到,而是直接拋出給調(diào)用接口的客戶端,所以就沒(méi)有回滾。這時(shí)候就需要在拋出異常的地方手動(dòng)回滾事務(wù)。
手動(dòng)回滾事務(wù)原理
org.springframework.transaction.support.TransactionTemplate:可以在service層方法中添加事務(wù),Spring為我們提供了一種方法就是使用TransactionTemplate類;我們要為T(mén)ransactionTemplate裝配一個(gè)TransactionManager,調(diào)用TransactionTemplate實(shí)例的execute()方法將執(zhí)行包含在TransactionCallback實(shí)例里的代碼。如果代碼出現(xiàn)異常,調(diào)用TransactionStatus對(duì)象的setRollbackOnly()將事務(wù)回滾。否則,如果doInTransaction()方法 正常返回,事務(wù)將被提交。
手動(dòng)回滾事務(wù)相關(guān)代碼實(shí)現(xiàn)
xml文件配置
java代碼
/* * 注入聲明式事物模板 */ @Resource private JdbcDbDAO pubjdbcDAO; @Resource private TransactionTemplate transactionTemplate; public String SavePhysicianOrder(final String zyid,final String yzsllx,final String DATA_BUSINESS) { // TODO Auto-generated method stub //開(kāi)始事務(wù),如果出現(xiàn)狀況則回滾 String execute = transactionTemplate.execute(new TransactionCallback() { String jsonStr="";//返回值 @Override public String doInTransaction(TransactionStatus ts) { try { // 使用JdbcTemplate進(jìn)行持久化層操作 String delSQL="DELETE FROM ZYGL_YZMXB";//封裝好的JdbcTemplate int exeRnt=pubjdbcDAO.execSQL(delSQL);//封裝J好的dbcTemplate if(exeRnt <= 0){ jsonStr="操作失敗!!"; }else{ jsonStr="操作成功!!"; } } catch (Exception e) { ts.setRollbackOnly(); jsonStr="數(shù)據(jù)發(fā)生異常,異常信息:"+e.getLocalizedMessage(); return jsonStr; } // 如果成功,事務(wù)被提交 return jsonStr; } }); return execute; }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/66386.html
摘要:解決注解不回滾檢查你方法是不是的。之后新加入的注解,原來(lái)返回需要和配合。和為異步注解,放到方法上,表示調(diào)用該方法的線程與此方法異步執(zhí)行,需要配合注解使用。是中的標(biāo)注,是為了控制返回的字符串顯示哪些字段。 @SpringBootApplication = (默認(rèn)屬性)@Configuration + @EnableAutoConfiguration + @ComponentScan。 @...
摘要:前言如題,今天介紹的聲明式事務(wù)。提供一個(gè)注解在配置類上來(lái)開(kāi)啟聲明式事務(wù)的支持。而在配置里還開(kāi)啟了對(duì)聲明式事務(wù)的支持,代碼如下所以在中,無(wú)須顯式開(kāi)啟使用注解。源碼下載后語(yǔ)以上為聲明式事務(wù)的教程。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問(wèn)題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問(wèn)題。 前言 如題,今天介紹 SpringBoot 的 聲明式事務(wù)。 Spring 的事務(wù)機(jī)制 所有的數(shù)據(jù)訪問(wèn)技術(shù)都有事務(wù)處...
摘要:聲明式事務(wù)管理的事務(wù)管理是通過(guò)代理實(shí)現(xiàn)的。其中的事務(wù)通知由元數(shù)據(jù)目前基于或注解驅(qū)動(dòng)。代理對(duì)象與事務(wù)元數(shù)據(jù)結(jié)合產(chǎn)生了一個(gè)代理,它使用一個(gè)實(shí)現(xiàn)品配合,在方法調(diào)用前后實(shí)施事務(wù)。 JDBC事務(wù) 1.獲取連接 Connection con=DriverManager.getConnection(); 2.開(kāi)啟事務(wù) con.setAutoCommit(true/fase); 3.執(zhí)行CRUD 4....
閱讀 2962·2021-10-18 13:33
閱讀 847·2019-08-30 14:20
閱讀 2633·2019-08-30 13:14
閱讀 2524·2019-08-29 18:38
閱讀 2892·2019-08-29 16:44
閱讀 1216·2019-08-29 15:23
閱讀 3491·2019-08-29 13:28
閱讀 1918·2019-08-28 18:00