Mysql
 sql >> база данни >  >> RDS >> Mysql

Управление на транзакции с DAO

Ако използвате обикновен JDBC, това, което бихте могли да направите, е да споделите същия екземпляр на Connection в двата екземпляра на класовете 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;
    }

    ...
}

В клиентския код първо трябва да създадете 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();
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Задайте пресечна точка в MySQL:чист начин

  2. SQL ПОРЪЧАЙ ПО множество колони

  3. SQL - Как да намеря най-голямото число в колона?

  4. MySQL параметризирани заявки

  5. TIME_FORMAT() Примери – MySQL