Ⅰ java如何進行事務管理,什麼時候用事務控制
Java種運用了大量的事抄務管理,就是對一系列的資料庫操作進行統一的提交或回滾操作,比如說做一個轉賬功能,要更改帳戶兩邊的數據,這時候就必須要用事務才能算是嚴謹的做法。要麼成功,要麼失敗,保持數據一致性。如果中間有一個操作出現異常,那麼回滾之前的所有操作。
在strut2框架中為了避免多個用戶同時訪問伺服器,都會使用事務管理來管理訪問的人數。
Ⅱ java 什麼情況下需要事務
Java事務控制是構建J2EE應用不可缺少的一部分,合理選擇應用何種事務對整個應用系統來說至關重要。一般說來,在單個JDBC 連接連接的情況下可以選擇JDBC事務,在跨多個連接或者資料庫情況下,需要選擇使用JTA事務,如果用到了EJB,則可以考慮使用EJB容器事務。
Ⅲ java事務相關
Java中的事務處理
一般情況下,J2EE應用伺服器支持JDBC事務、JTA(JavaTransactionAPI)事務、容器管理事務。一般情況下,最好不要在程序中同時使用上述三種事務類型,比如在JTA事務中嵌套JDBC事務。第二方面,事務要在盡可能短的時間內完成,不要在不同方法中實現事務的使用。下面我們列舉兩種事務處理方式。
1、JavaBean中使用JDBC方式進行事務處理
在JDBC中怎樣將多個SQL語句組合成一個事務呢?在JDBC中,打開一個連接對象Connection時,預設是auto-commit模式,每個SQL語句都被當作一個事務,即每次執行一個語句,都會自動的得到事務確認。為了能將多個SQL語句組合成一個事務,要將auto-commit模式屏蔽掉。在auto-commit模式屏蔽掉之後,如果不調用commit()方法,SQL語句不會得到事務確認。在最近一次commit()方法調用之後的所有SQL會在方法commit()調用時得到確認。
publicintdelete(intsID){
dbc=newDataBaseConnection();
Connectioncon=dbc.getConnection();
try{
con.setAutoCommit(false);//更改JDBC事務的默認提交方式
dbc.executeUpdate("deletefrombylawwhereID="+sID);
dbc.executeUpdate("deletefrombylaw_contentwhereID="+sID);
dbc.executeUpdate("deletefrombylaw_affixwherebylawid="+sID);
con.commit();//提交JDBC事務
con.setAutoCommit(true);//恢復JDBC事務的默認提交方式
dbc.close();
return1;
}
catch(Exceptionexc){
con.rollBack();//回滾JDBC事務
exc.printStackTrace();
dbc.close();
return-1;
}
}
2、SessionBean中的JTA事務
JTA是事務服務的J2EE解決方案。本質上,它是描述事務介面(比如UserTransaction介面,開發人員直接使用該介面或者通過J2EE容器使用該介面來確保業務邏輯能夠可靠地運行)的J2EE模型的一部分。JTA具有的三個主要的介面分別是UserTransaction介面、TransactionManager介面和Transaction介面。這些介面共享公共的事務操作,例如commit()和rollback(),但是也包含特殊的事務操作,例如suspend(),resume()和enlist(),它們只出現在特定的介面上,以便在實現中允許一定程度的訪問控制。例如,UserTransaction能夠執行事務劃分和基本的事務操作,而TransactionManager能夠執行上下文管理。
應用程序可以調用UserTransaction.begin()方法開始一個事務,該事務與應用程序正在其中運行的當前線程相關聯。底層的事務管理器實際處理線程與事務之間的關聯。UserTransaction.commit()方法終止與當前線程關聯的事務。UserTransaction.rollback()方法將放棄與當前線程關聯的當前事務。
publicintdelete(intsID){
DataBaseConnectiondbc=null;
dbc=newDataBaseConnection();
dbc.getConnection();
UserTransactiontransaction=sessionContext.getUserTransaction();//獲得JTA事務
try{
transaction.begin();//開始JTA事務
dbc.executeUpdate("deletefrombylawwhereID="+sID);
dbc.executeUpdate("deletefrombylaw_contentwhereID="+sID);
dbc.executeUpdate("deletefrombylaw_affixwherebylawid="+sID);
transaction.commit();//提交JTA事務
dbc.close();
return1;
}
catch(Exceptionexc){
try{
transaction.rollback();//JTA事務回滾
}
catch(Exceptionex){
//JTA事務回滾出錯處理
ex.printStackTrace();
}
exc.printStackTrace();
dbc.close();
return-1;
}
}
Ⅳ 事務的提交和回滾是什麼意思 Java
一組業務整體處理的行為叫一個事務。這一組的業務都能成功處理,我們就可以把這個事務提交來保存你已做的行為結果。但如果一組中有任何的差錯出現的話,我們就認為這事務不成功,需要回滾來撤消之前的操作。舉例:你去銀行轉賬,轉賬我們有兩步吧,從你賬戶中取出錢再往他賬戶中加錢。那這兩步銀行是必須要確保正確無誤的進行的。要被看做成一個事務。其中任何一步出錯就算是轉賬失敗,但可能你這時是已經從你賬戶中扣了錢了,又沒往他賬戶里加錢?怎麼辦算了?你不肯吧。所以銀行會事務回滾,不保存你剛才的操作,即恢復到你沒轉賬之前的狀態。累啊