Nếu bạn đang sử dụng JDBC thuần túy, những gì bạn có thể làm là chia sẻ cùng một phiên bản của Connection
trong hai trường hợp của các lớp 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;
}
...
}
Trong mã máy khách, trước tiên bạn cần tạo một Connection
thể hiện đối tượng. Tiếp theo, bạn cần bắt đầu giao dịch với conn.setAutoCommit(false);
. Vượt qua Connection
cá thể đối tượng cho cả hai lớp DAO. Nếu không có lỗi nào xảy ra trong bất kỳ thao tác nào, hãy conn.commit();
, ngược lại, conn.rollback();
ví dụ:
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();
}
}