當前位置:首頁 » 編程語言 » java資料庫事務

java資料庫事務

發布時間: 2023-07-02 17:13:11

java 事務

Java中的事務處理

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

1、JavaBean中使用JDBC方式進行事務處理
在JDBC中怎樣將多個sql語句組合成一個事務呢?在JDBC中,打開一個連接對象Connection時,預設是auto-commit模式,每個SQL語句都被當作一個事務,即每次執行一個語句,都會自動的得到事務確認。為了能將多個SQL語句組合成一個事務,要將auto-commit模式屏蔽掉。在auto-commit模式屏蔽掉之後,如果不調用commit()方法,SQL語句不會得到事務確認。在最近一次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()方法開始一個事務,該事務與應用程序正在其中運行的當前線程相關聯。底層的事務管理器實際處理線程與事務之間的關聯。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;
}
}

Ⅱ java事務處理的事務的特性

Atomic原子性、Consistency一致性、Isolation隔離性和Durability持久性。
原子性:指整個事務是不可以分割的工作單元。只有事務中所有的操作執行成功,才算整個事務成功,事務中任何一個SQL語句執行失敗,那麼已經執行成功的SQL語句也必須撤銷,資料庫狀態應該回到執行事務前的狀態。
一致性:指資料庫事務不能破壞關系數據的完整性以及業務邏輯上的一致性。例如對於銀行轉賬事務,不管事務成功還是失敗,應該保證事務結束後兩個轉賬賬戶的存款總額是與轉賬前一致的。
隔離性:指的是在並發環境中,當不同的事務同時操縱相同的數據時,每個事務都有各自的完整數據空間。
持久性:指的是只要事務成功結束,它對資料庫所做的更新就必須永久保存下來。即使發生系統崩潰,重新啟動資料庫系統後,資料庫還能恢復到事務成功結束時的狀態。
本文並不討論應該採用何種事務處理方式,主要目的是討論如何更為優雅地設計事務服務。僅以JDBC事務處理為例。涉及到的DAO,Factory,Proxy,Decorator等模式概念,請閱讀相關資料

Ⅲ java連oracle資料庫事務重置連接時間

1、右鍵開始菜單,選擇控制面板。
2、找到日期和時間,點擊進入。
3、點擊更改日期和時間。
4、進入後,修改日期時間,保存即可。
5、以上就是java連oracle資料庫事務重置連接時間的方法。

Ⅳ java中多個事務公用一個連接嗎

spring事務
資料庫事務、連接與java線程之間的關系

最近在處理事務和多線程時,比較困擾資料庫事務,資料庫連接以及java線程之間的關系。

問題1:事務和連接的關系?

回答:對於資料庫事務來說先有一個連接,才能有事務,一個連接里可以有一次或多次事務的提交(自動提交或者手動提交)。對於java中的被transactional註解方法來說,這個被事務管理的方法中可能會使用多個連接。例如一個事務方法里嵌套一個propagation=required的事務方法時,外方法用一個連接,嵌套的方法用一個連接,並且是兩個不同的事務。

問題2:連接和線程的關系?

回答:從debug代碼看來,一個線程中有去操作資料庫,就會去CP獲取一個資料庫連接,如果此時CP中沒有連接可用,就會等待,直到有連接為止。

問題3:一個事務中(transactional註解的方法內)如果開啟了多個線程去執行其他的插入操作,那麼每個線程執行的插入操作,和線程的caller方法中的插入操作是同一個事務嗎?

回答:不是同一個事務

解析:

1.如下圖,一個transactional 註解的方法內,先做一次插入操作,接著開了3個線程去分別處理插入任務

 2.執行結果通過看debug日誌可看出,在執行testTransAndConnection方法時獲取了一個資料庫連接,並開啟了一個事務,並把事務設置為手動提交,然後進行插入操作,插入操作完成,就call起三個線程並且准備著手提交主方法里的事務了。

 3.每個線程是創建了不同的sqlsession 去處理的,這里用的連接卻都還是主方法釋放的那個連接(這里都是同一個連接的原因是由於服務起來後,第一次去請求應用,此時資料庫連接池還沒有初始化完畢,池子里只有剛剛初始化好的一個連接,其他的連接還沒來的及初始化出來,所以這里幾個線程的操作其實是大家都在等待並爭用那唯一的一個資料庫連接。等CP初始化完畢,如果再次觸發一次請求就會發現:每個線程的sqlsession都是不同的連接)

熱點內容
linux改變所有者 發布:2025-02-10 23:04:13 瀏覽:650
源碼曹毅 發布:2025-02-10 23:04:01 瀏覽:582
odbcforsqlserver 發布:2025-02-10 22:26:37 瀏覽:600
區塊鏈數據存儲在那裡 發布:2025-02-10 22:25:48 瀏覽:689
c語言for死循環 發布:2025-02-10 22:24:08 瀏覽:523
蘋果限制訪問初始密碼 發布:2025-02-10 22:21:31 瀏覽:759
為什麼安卓手機一年後卡頓 發布:2025-02-10 22:15:39 瀏覽:732
職工信息管理系統設計c語言 發布:2025-02-10 22:15:30 瀏覽:119
預演算法的理念 發布:2025-02-10 22:15:25 瀏覽:133
如何結合商圈顧客特點配置貨品 發布:2025-02-10 22:10:59 瀏覽:594