JDBCトランザクション制御の実装方法【Javaサンプルコード付き】
JDBC内では、トランザクション制御を実装するために次の手順を取ることができます。
- データベース接続を取得するには、最初にDriverManagerを使用してデータベース接続を取得します。
- 自動コミットを無効にする:接続を作成した後、自動コミットをfalseに設定する必要があります。これにより、トランザクションのコミットとロールバックを手動で制御できます。
- トランザクションの開始:ConnectionオブジェクトのsetAutoCommit(false)メソッドを呼び出すことで、トランザクションを開始します。
- SQL文を実行します:トランザクションが開始された後、StatementやPreparedStatementオブジェクトを使用して、挿入、更新、削除のSQL文を実行できます。
- すべての操作が成功した場合は、Connectionオブジェクトのcommit()メソッドを呼び出すことでトランザクションをコミットできます。
- トランザクションのロールバック:エラーが発生したりトランザクションをロールバックする必要がある場合は、Connectionオブジェクトのrollback()メソッドを呼び出すことでトランザクションをロールバックすることができます。
- 接続を切断してください:最後に、接続を切断し、リソースを解放することを忘れないでください。
以下は簡単なサンプルコードです:
Connection conn = null;
Statement stmt = null;
try {
conn = DriverManager.getConnection(url, username, password);
conn.setAutoCommit(false);
stmt = conn.createStatement();
stmt.executeUpdate("INSERT INTO table_name(column1, column2) VALUES(value1, value2)");
conn.commit();
} catch (SQLException e) {
if (conn != null) {
try {
conn.rollback();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
e.printStackTrace();
} finally {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.setAutoCommit(true);
conn.close();
}
}
上の例では、まずデータベース接続を取得し、自動コミットを解除してトランザクションを開始し、トランザクション内でSQL文を実行します。例外が発生した場合はトランザクションをロールバックし、最後に接続を閉じます。これにより、簡単なトランザクション制御が実現されます。