亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JDBC事務處理機制是什么

發布時間:2021-12-22 13:37:43 來源:億速云 閱讀:163 作者:iii 欄目:編程語言

本篇內容介紹了“JDBC事務處理機制是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Java中的事務處理

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

1、JavaBean中使用JDBC事務處理

在JDBC中怎樣將多個SQL語句組合成一個事務呢?在JDBC中,打開一個連接對象Connection時,缺省是auto-commit模式,每個SQL語句都被當作一個事務,即每次執行一個語句,都會自動的得到事務確認。為了能將多個SQL語句組合成一個事務,要將auto-commit模式屏蔽掉。在auto-commit模式屏蔽掉之后,如果不調用commit()方法,SQL語句不會得到JDBC事務處理確認。在最近一次commit()方法調用之后的所有SQL會在方法commit()調用時得到確認。

public int delete(int sID) {    dbc = new DataBaseConnection();    Connection con = dbc.getConnection();    try {   con.setAutoCommit(false);// 更改JDBC事務的默認提交方式   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事務   con.setAutoCommit(true);// 恢復JDBC事務的默認提交方式   dbc.close();   return 1;    }    catch (Exception exc) {   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()方法開始一個事務,該JDBC事務處理與應用程序正在其中運行的當前線程相關聯。底層的事務管理器實際處理線程與事務之間的關聯。UserTransaction.commit()方法終止與當前線程關聯的事務。UserTransaction.rollback()方法將放棄與當前線程關聯的當前事務。

public int delete(int sID) {    DataBaseConnection dbc = null;    dbc = new DataBaseConnection();    dbc.getConnection();    UserTransaction transaction = sessionContext.getUserTransaction();//獲得JTA事務    try {   transaction.begin(); //開始JTA事務   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事務   dbc.close();   return 1;    }    catch (Exception exc) {   try {    transaction.rollback();//JTA事務回滾   }   catch (Exception ex) {    //JTA事務回滾出錯處理    ex.printStackTrace();   }   exc.printStackTrace();   dbc.close();   return -1;    }   }

“JDBC事務處理機制是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桐梓县| 合川市| 名山县| 呼伦贝尔市| 海口市| 青川县| 芜湖市| 微博| 龙江县| 武清区| 大埔区| 富宁县| 西峡县| 扎鲁特旗| 巴青县| 乐平市| 伊宁市| 天长市| 自贡市| 滦平县| 华安县| 甘孜县| 千阳县| 无极县| 黄骅市| 平乡县| 土默特左旗| 微山县| 宁乡县| 美姑县| 钟祥市| 汝阳县| 诸暨市| 容城县| 江安县| 宝丰县| 合作市| 衡阳县| 康保县| 浠水县| 宝山区|