java-Java實現mysql事務處理操作


數據庫事務(簡稱:事務)是數據庫管理系統執行過程中的一個邏輯單位,由一個有限的數據庫操作序列構成。

並非任意的對數據庫的操作序列都是數據庫事務。數據庫事務擁有以下四個特性,習慣上被稱之為ACID特性。
  • 原子性(Atomicity):事務作為一個整體被執行,包含在其中的對數據庫的操作要么全部被執行,要么都不執行。
  • 一致性(Consistency):事務應確保數據庫的狀態從一個一致狀態轉變為另一個一致狀態。 一致狀態的含義是數據庫中的數據應滿足完整性約束。
  • 隔離性(Isolation):多個事務並發執行時,一個事務的執行不應影響其他事務的執行。
  • 持久性(Durability):已被提交的事務對數據庫的修改應該永久保存在數據庫中。  

簡單模擬實現mysql事務處理操作:

public int updateUser2(User user,Map<String, Object> param) {
        user.setLoginName("zhangyy");
        user = getSqlSession().selectOne("getByLoginName",user);
        User user2 = new User();
        user2.setLoginName("lizg");
        user2 = getSqlSession().selectOne("getByLoginName",user2);
        int num = 0;
        Connection connection = null;
        try {
            connection = getSqlSession().getConnection();//獲取數據庫連接(自己實現的抽象類)
            connection.setAutoCommit(false);//JDBC中默認是true,自動提交事務
            user.setRanking(-100);
            getSqlSession().update("updateUser",user);//模擬轉賬支付100    
            user2.setRanking(100);
            user2.setLoginName(null);//修改sql語句使第2條語句出現異常
            getSqlSession().update("updateUser",user2);//模擬轉賬收款100    
            connection.commit();//提交事務
        } catch (Exception e) {
            try {
                connection.rollback();//回滾,出現異常后兩條數據都執行不成功
            } catch (SQLException e1) {
            }
        }finally {
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                }
            }
        }

        return num;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM