コツコツ学習ブログ

プログラマのweb上のメモ的なもの

トランザクション処理

トランザクションとは

プログラムからデータベースに送信する1つ以上のSQL文の要求を 1つのグループとして扱う考え方

##データベースのトランザクション制御 同一トランザクションに属するSQL文の処理要求が複数ある場合、 - 全てが成功して初めて処理結果を確定する(コミット) - 途中で失敗したら、トランザクション実行前の状態に戻す(ロールバック)

package sample;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Main {
    public static void main(String[] args) {

        //JDBCドライバのロード(h2データベース)
        try {
            Class.forName("org.h2.Driver");
        } catch (ClassNotFoundException e) {
            throw new IllegalStateException("ドライバのロードに失敗しました");
        }
        //java.sql.connectionのインスタンスを取得
        Connection con = null;
        try {
            //DBへの接続
            con = DriverManager.getConnection("jdbc:h2:~/mydb", "sa", "");
            //自動コミットモードの解除。これを行わないとSQL文が一つ送信される度に自動的にコミットされる
            con.setAutoCommit(false);
            //送信済の処理要求の確定
            con.commit();
        } catch (SQLException e) {
            try {
                //送信済みの処理要求のキャンセル(ロールバック)
                con.rollback();
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        } finally {
            //DB接続の切断
            if (con != null) {
                try {
                    con.close();
                } catch (Exception e3) {
                    e3.printStackTrace();
                }
            }
        }
    }
}