Se você estiver usando JDBC simples, o que você pode fazer é compartilhar a mesma instância de
Connection
nas duas instâncias das classes 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;
}
...
}
No código do cliente, primeiro você precisa criar uma
Connection
instância do objeto. Em seguida, você precisa iniciar a transação, com conn.setAutoCommit(false);
. Passe a Connection
instância de objeto para ambas as classes DAO. Se nenhum erro ocorrer em nenhuma operação, conn.commit();
, caso contrário, conn.rollback();
por exemplo.:
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();
}
}