溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java在什么情況下使用事務(wù)

發(fā)布時(shí)間:2020-05-06 13:49:30 來(lái)源:億速云 閱讀:1366 作者:小新 欄目:編程語(yǔ)言

java在什么情況下使用事務(wù)?相信有很多人都不太了解,今天小編為了讓大家更加了解java,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。

什么時(shí)候使用事務(wù)?

1、如果實(shí)際的業(yè)務(wù)中,需要將一條數(shù)據(jù)同時(shí)存放到兩張表中, 并且要求兩張表中的數(shù)據(jù)同步,那么此時(shí)就需要使用事務(wù)管理機(jī)制,保證數(shù)據(jù)同步。如果出現(xiàn)錯(cuò)誤情況,比如表一插入數(shù)據(jù)成功,表二插入數(shù)據(jù)失敗,那么就回滾,終止數(shù)據(jù)持久化操作。

2、金融行業(yè)的軟件開(kāi)發(fā)嚴(yán)格重視事務(wù)處理,比如我們常見(jiàn)的轉(zhuǎn)賬操作,一方的賬戶金額減少,對(duì)應(yīng)的是另一方的賬戶金額增加,這個(gè)過(guò)程需要使用到事務(wù)機(jī)制,不然轉(zhuǎn)賬不能成功。

以JDBC處理事務(wù)為例:

public static void main(String[] args) throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/user";
        String user = "root";
        String password = "123456";
        Connection con = (Connection) DriverManager.getConnection(url, user, password);
        try {
            //取消自動(dòng)提交
            //如果設(shè)成false,那就是JDBC不自動(dòng)提交,需要手動(dòng)的使用commit或者rollback來(lái)進(jìn)行提交或者回滾數(shù)據(jù). 
            con.setAutoCommit(false);
            Statement stmt = (Statement) con.createStatement();
            //進(jìn)行數(shù)據(jù)插入
            String sql = "insert into users(email,password) values('" + "jack@163.com" + "','" + "jack" + "');";
            boolean flag = stmt.execute(sql);
            System.out.println(flag);
            //人為制造一個(gè)錯(cuò)誤,結(jié)果就是數(shù)據(jù)庫(kù)并沒(méi)有插入這條數(shù)據(jù),也就是數(shù)據(jù)發(fā)生了回滾
            //異常被捕獲之后,就不在執(zhí)行下面的語(yǔ)句,而是執(zhí)行catch中的語(yǔ)句
            //如果沒(méi)有異常,數(shù)據(jù)就會(huì)被提交到數(shù)據(jù)庫(kù)
            System.out.println(1/0);
            //手動(dòng)提交
            con.commit();
        } catch (Exception e) {
            //如果發(fā)生錯(cuò)誤,就回滾
            con.rollback();
        } finally {
            con.close();
        }
    }

以上就是java在什么情況下使用事務(wù)的簡(jiǎn)略介紹,當(dāng)然詳細(xì)使用上面的不同還得要大家自己使用過(guò)才領(lǐng)會(huì)。如果想了解更多,歡迎關(guān)注億速云行業(yè)資訊頻道哦!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI