java什么是事務(wù)意思概念
事務(wù),一般是指要做的或所做的事情。在計算機術(shù)語中是指訪問并可能更新數(shù)據(jù)庫中各種數(shù)據(jù)項的一個程序執(zhí)行單元(unit)。事務(wù)(Transaction)是訪問并可能更新數(shù)據(jù)庫中各種數(shù)據(jù)項的一個程序執(zhí)行單元(unit)。事務(wù)通常由高級數(shù)據(jù)庫操縱語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執(zhí)行所引起,并用形如begin transaction和end transaction語句(或函數(shù)調(diào)用)來界定。事務(wù)由事務(wù)開始(begin transaction)和事務(wù)結(jié)束(end transaction)之間執(zhí)行的全體操作組成。
Java中的事務(wù)處理
一般情況下,J2EE應用服務(wù)器支持JDBC事務(wù)、JTA(Java Transaction API)事務(wù)、容器管理事務(wù)。一般情況下,最好不要在程序中同時使用上述三種事務(wù)類型,比如在JTA事務(wù)中嵌套JDBC事務(wù)。第二方面,事務(wù)要在盡可能短的時間內(nèi)完成,不要在不同方法中實現(xiàn)事務(wù)的使用。下面我們列舉兩種事務(wù)處理方式。
1、JavaBean中使用JDBC方式進行事務(wù)處理
在JDBC中怎樣將多個SQL語句組合成一個事務(wù)呢?在JDBC中,打開一個連接對象Connection時,缺省是auto-commit模式,每個SQL語句都被當作一個事務(wù),即每次執(zhí)行一個語句,都會自動的得到事務(wù)確認。為了能將多個SQL語句組合成一個事務(wù),要將auto-commit模式屏蔽掉。在auto-commit模式屏蔽掉之后,如果不調(diào)用commit()方法,SQL語句不會得到事務(wù)確認。在最近一次commit()方法調(diào)用之后的所有SQL會在方法commit()調(diào)用時得到確認。
public int delete(int sID) { dbc = new DataBaseConnection(); Connection con = dbc.getConnection(); try { con.setAutoCommit(false);// 更改JDBC事務(wù)的默認提交方式 dbc.executeUpdate("delete from bylaw where ID=" + sID); dbc.executeUpdate("delete from bylaw _content where ID=" + sID); dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID); con.commit();//提交JDBC事務(wù) con.setAutoCommit(true);// 恢復JDBC事務(wù)的默認提交方式 dbc.close(); return 1; } catch (Exception exc) { con.rollBack();//回滾JDBC事務(wù) exc.printStackTrace(); dbc.close(); return -1; } } |
2、SessionBean中的JTA事務(wù)
JTA 是事務(wù)服務(wù)的 J2EE 解決方案。本質(zhì)上,它是描述事務(wù)接口(比如 UserTransaction 接口,開發(fā)人員直接使用該接口或者通過 J2EE 容器使用該接口來確保業(yè)務(wù)邏輯能夠可靠地運行)的 J2EE 模型的一部分。JTA 具有的三個主要的接口分別是 UserTransaction 接口、TransactionManager 接口和 Transaction 接口。這些接口共享公共的事務(wù)操作,例如 commit() 和 rollback(), 但是也包含特殊的事務(wù)操作,例如 suspend(),resume() 和 enlist(),它們只出現(xiàn)在特定的接口上,以便在實現(xiàn)中允許一定程度的訪問控制。例如,UserTransaction 能夠執(zhí)行事務(wù)劃分和基本的事務(wù)操作,而 TransactionManager 能夠執(zhí)行上下文管理。
應用程序可以調(diào)用UserTransaction.begin()方法開始一個事務(wù),該事務(wù)與應用程序正在其中運行的當前線程相關(guān)聯(lián)。底層的事務(wù)管理器實際處理線程與事務(wù)之間的關(guān)聯(lián)。UserTransaction.commit()方法終止與當前線程關(guān)聯(lián)的事務(wù)。UserTransaction.rollback()方法將放棄與當前線程關(guān)聯(lián)的當前事務(wù)。
public int delete(int sID) { DataBaseConnection dbc = null; dbc = new DataBaseConnection(); dbc.getConnection(); UserTransaction transaction = sessionContext.getUserTransaction();//獲得JTA事務(wù) try { transaction.begin(); //開始JTA事務(wù) dbc.executeUpdate("delete from bylaw where ID=" + sID); dbc.executeUpdate("delete from bylaw _content where ID=" + sID); dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID); transaction.commit(); //提交JTA事務(wù) dbc.close(); return 1; } catch (Exception exc) { try { transaction.rollback();//JTA事務(wù)回滾 } catch (Exception ex) { //JTA事務(wù)回滾出錯處理 ex.printStackTrace(); } exc.printStackTrace(); dbc.close(); return -1; } } |
java什么是事務(wù)意思概念
上一篇:java什么是實例意思指的是
下一篇:java中什么是字段