JavaでMySQLとのトランザクションを実行する方法について、以下のコード例を用いて詳しく説明します。
-
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(); } } } } }
-
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
クラスを使用してトランザクションを制御します。