プレーンJDBCを使用している場合、できることはConnection
の同じインスタンスを共有することです。 DAOクラスの2つのインスタンスで。
public class EmployeeDAO {
private Connection conn;
public void setConnection(Connection conn) {
this.conn = conn;
}
...
}
public class BankDAO {
private Connection conn;
public void setConnection(Connection conn) {
this.conn = conn;
}
...
}
クライアントコードでは、最初にConnection
を作成する必要があります オブジェクトインスタンス。次に、conn.setAutoCommit(false);
を使用してトランザクションを開始する必要があります。 。 Connection
を渡します 両方のDAOクラスへのオブジェクトインスタンス。どの操作でもエラーが発生しない場合は、conn.commit();
それ以外の場合は、conn.rollback();
例:
Connection conn = null;
try {
// getConnection from pool
conn.setAutoCommit(false);
EmployeeDAO employeeDAO = new EmployeeDAO();
employeeDAO.setConnection(conn);
BankDAO bankDAO = new BankDAO();
bankDAO.setConnection(conn);
// save employee
// save bank details
conn.commit();
catch(Exception e) {
if (conn != null) {
conn.rollback();
}
} finally {
if (conn != null) {
conn.close();
}
}