您好,登錄后才能下訂單哦!
這篇文章主要介紹“java事務的類型有哪些及怎么使用”,在日常操作中,相信很多人在java事務的類型有哪些及怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java事務的類型有哪些及怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
1.JDBC事務
用 Connection 對象控制,JDBC 的 Connection 接口提供了兩種事務模式:自動提交、手工提交。
public void setAutoCommit(boolean) public boolean getAutoCommit() public void commit() public void rollback()
JDBC 為使用 Java 進行數據庫的事務操作提供了最基本的支持。可以將多個 SQL 語句放到同一個事務中,保證其 ACID 特性。
涉及到多數據庫的操作或者分布式場景,JDBC事務就無能為力了。
2.JTA(Java Transaction API)事務
JTA是一種高層的,與實現無關的,與協議無關的API,應用程序和應用服務器可以使用JTA來訪問事務。JTA允許應用程序執行分布式事務處理--在兩個或多個網絡計算機資源上訪問并且更新數據,這些數據可以分布在多個數據庫上。JDBC驅動程序的JTA支持極大地增強了數據訪問能力。
public void JtaTransfer() { javax.transaction.UserTransaction tx = null; java.sql.Connection conn = null; try{ tx = (javax.transaction.UserTransaction) context.lookup("java:comp/UserTransaction"); //取得JTA事務,本例中是由Jboss容器管理 javax.sql.DataSource ds = (javax.sql.DataSource) context.lookup("java:/XAOracleDS"); //取得數據庫連接池,必須有支持XA的數據庫、驅動程序 tx.begin(); conn = ds.getConnection(); // 將自動提交設置為 false, //若設置為 true 則數據庫將會把每一次數據更新認定為一個事務并自動提交 conn.setAutoCommit(false); stmt = conn.createStatement(); // 將 A 賬戶中的金額減少 500 stmt.execute("\ update t_account set amount = amount - 500 where account_id = 'A'"); // 將 B 賬戶中的金額增加 500 stmt.execute("\ update t_account set amount = amount + 500 where account_id = 'B'"); // 提交事務 tx.commit(); // 事務提交:轉賬的兩步操作同時成功 } catch(SQLException sqle){ try{ // 發生異常,回滾在本事務中的操做 tx.rollback(); // 事務回滾:轉賬的兩步操作完全撤銷 stmt.close(); conn.close(); }catch(Exception ignore){ } sqle.printStackTrace(); } }
3.容器事務
容器事務主要是J2EE應用服務器提供的,容器事務大多是基于JTA完成,這是一個基于JNDI的,相當復雜的API實現。
到此,關于“java事務的類型有哪些及怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。