Si está utilizando JDBC simple, lo que podría hacer es compartir la misma instancia de Connection
en las dos instancias de las clases DAO.
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;
}
...
}
En el código del cliente, primero debe crear una Connection
instancia de objeto. A continuación, debe iniciar la transacción con conn.setAutoCommit(false);
. Pase la Connection
instancia de objeto a las dos clases DAO. Si no se producen errores en ninguna operación, conn.commit();
, de lo contrario, conn.rollback();
por ejemplo:
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();
}
}