JDBC ORACLE 事物處理

來源:互聯網
上載者:User

標籤:oracle   sql   jdbc   事務   java   

資料庫事物:
在資料庫中,所謂事務是指一組邏輯操作單元,使資料從一種狀態變換到另一種狀態。
為確保資料庫中資料的一致性,資料的操縱應當是離散的成組的邏輯單元:當它全部
完成時,資料的一致性可以保持,而當這個單元中的一部分操作失敗,整個事務應全部視
為錯誤,所有從起始點以後的操作應全部回退到開始狀態。 
事務的操作:先定義開始一個事務,然後對資料作修改操作,這時如果提交(COMMIT),這些修改
就永久地儲存下來,如果回退(ROLLBACK),資料庫管理系統將放棄所作的所有修
改而回到開始事務時的狀態。


事務的ACID(acid)屬性
1. 原子性(Atomicity)原子性是指事務是一個不可分割的工作單位,事務中的操作要麼都發生,
要麼都不發生。
2. 一致性(Consistency)事務必須使資料庫從一個一致性狀態變換到另外一個一致性狀態。
3. 隔離性(Isolation)事務的隔離性是指一個事務的執行不能被其他事務幹擾,即一個事務
內部的操作及使用的資料對並發的其他事務是隔離的,並發執行的各個
事務之間不能互相干擾。
4. 持久性(Durability)持久性是指一個事務一旦被提交,它對資料庫中資料的改變就是永久性的,
  接下來的其他動作和資料庫故障不應該對其有任何影響
  
事務:指構成單個邏輯工作單元的操作集合
交易處理:保證所有事務都作為一個工作單元來執行,即使出現了故障,都不能改變這種執行方式。
當在一個事務中執行多個操作時,要麼所有的事務都被提交(commit),要麼整個交易回復(rollback)到最初狀態
        當一個連線物件被建立時,預設情況下是自動認可事務:每次執行一個 SQL 陳述式時,如果執行成功,就會向資料
庫自動認可,而不能復原
為了讓多個 SQL 陳述式作為一個事務執行:
調用 Connection 對象的 setAutoCommit(false); 以取消自動認可事務
在所有的 SQL 陳述式都成功執行後,調用 commit(); 方法提交事務
在出現異常時,調用 rollback(); 方法復原事務

若此時 Connection 沒有被關閉, 則需要恢複其自動認可狀態

常用的代碼結構

    public void test(String sql, Object... args)    {                Connection conn = null;        PreparedStatement prepareStatement = null;                try        {            conn = getConn();            // 事物處理前,取消Connection的預設提交行為            conn.setAutoCommit(false);            prepareStatement = conn.prepareStatement(sql);                        for (int i = 0; i < args.length; i++)            {                prepareStatement.setObject(i + 1, args[i]);            }            prepareStatement.executeUpdate();                        // 事物處理:如果事物處理成功則提交事物            conn.commit();        }        catch (Exception e)        {            e.printStackTrace();            try            {                // 事物處理:如果出現異常 則在catch塊中復原事物                conn.rollback();            }            catch (SQLException e1)            {                e1.printStackTrace();            }        }        finally        { // 釋放資料庫資源            releaseSource(prepareStatement, conn, null);        }            }

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

JDBC ORACLE 事物處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.