JavaでMySQLとのトランザクションを実行する方法


JavaでMySQLとのトランザクションを実行する方法について、以下のコード例を用いて詳しく説明します。

  1. JDBCを使用する方法:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    public class TransactionExample {
       public static void main(String[] args) {
           Connection connection = null;
           try {
               // JDBCドライバをロード
               Class.forName("com.mysql.jdbc.Driver");
               // データベースに接続
               connection = DriverManager.getConnection("jdbc:mysql://localhost/mydatabase", "username", "password");
               // トランザクションを開始
               connection.setAutoCommit(false);
               // トランザクション内での処理を実行
               // ...
               // トランザクションをコミット
               connection.commit();
           } catch (ClassNotFoundException e) {
               e.printStackTrace();
           } catch (SQLException e) {
               e.printStackTrace();
               if (connection != null) {
                   try {
                       // トランザクションをロールバック
                       connection.rollback();
                   } catch (SQLException ex) {
                       ex.printStackTrace();
                   }
               }
           } finally {
               if (connection != null) {
                   try {
                       // データベース接続をクローズ
                       connection.close();
                   } catch (SQLException e) {
                       e.printStackTrace();
                   }
               }
           }
       }
    }
  2. Spring Frameworkを使用する方法:

    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    import org.springframework.transaction.TransactionDefinition;
    import org.springframework.transaction.TransactionStatus;
    import org.springframework.transaction.support.DefaultTransactionDefinition;
    public class TransactionExample {
       private DataSourceTransactionManager transactionManager;
       public void setTransactionManager(DataSourceTransactionManager transactionManager) {
           this.transactionManager = transactionManager;
       }
       public void performTransaction() {
           TransactionDefinition txDef = new DefaultTransactionDefinition();
           TransactionStatus txStatus = transactionManager.getTransaction(txDef);
           try {
               // トランザクション内での処理を実行
               // ...
               // トランザクションをコミット
               transactionManager.commit(txStatus);
           } catch (Exception e) {
               e.printStackTrace();
               // トランザクションをロールバック
               transactionManager.rollback(txStatus);
           }
       }
    }

上記のコード例では、JDBCを直接使用する方法とSpring Frameworkを使用する方法の2つを示しています。JDBCを使用する場合は、java.sql.Connectionクラスを使用してトランザクションを制御します。Spring Frameworkを使用する場合は、DataSourceTransactionManagerクラスを使用してトランザクションを制御します。