JDBC事務(wù)處理機制是什么

本篇內(nèi)容介紹了“JDBC事務(wù)處理機制是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

為柳林等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及柳林網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、柳林網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

Java中的事務(wù)處理

一般情況下,J2EE應(yīng)用服務(wù)器支持JDBC事務(wù)、JTA(Java Transaction API)事務(wù)、容器管理事務(wù)。一般情況下,***不要在程序中同時使用上述三種事務(wù)類型,比如在JTA事務(wù)中嵌套JDBC事務(wù)。第二方面,事務(wù)要在盡可能短的時間內(nèi)完成,不要在不同方法中實現(xiàn)事務(wù)的使用。下面我們列舉兩種JDBC事務(wù)處理方式。

1、JavaBean中使用JDBC事務(wù)處理

在JDBC中怎樣將多個SQL語句組合成一個事務(wù)呢?在JDBC中,打開一個連接對象Connection時,缺省是auto-commit模式,每個SQL語句都被當(dāng)作一個事務(wù),即每次執(zhí)行一個語句,都會自動的得到事務(wù)確認。為了能將多個SQL語句組合成一個事務(wù),要將auto-commit模式屏蔽掉。在auto-commit模式屏蔽掉之后,如果不調(diào)用commit()方法,SQL語句不會得到JDBC事務(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);// 恢復(fù)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í)行上下文管理。

應(yīng)用程序可以調(diào)用UserTransaction.begin()方法開始一個事務(wù),該JDBC事務(wù)處理與應(yīng)用程序正在其中運行的當(dāng)前線程相關(guān)聯(lián)。底層的事務(wù)管理器實際處理線程與事務(wù)之間的關(guān)聯(lián)。UserTransaction.commit()方法終止與當(dāng)前線程關(guān)聯(lián)的事務(wù)。UserTransaction.rollback()方法將放棄與當(dāng)前線程關(guān)聯(lián)的當(dāng)前事務(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;    }   }

“JDBC事務(wù)處理機制是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

當(dāng)前名稱:JDBC事務(wù)處理機制是什么
分享網(wǎng)址:http://bm7419.com/article48/jceihp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作全網(wǎng)營銷推廣、營銷型網(wǎng)站建設(shè)標(biāo)簽優(yōu)化響應(yīng)式網(wǎng)站、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司