Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zarządzanie transakcjami z DAO

Jeśli używasz zwykłego JDBC, możesz udostępnić tę samą instancję Connection w dwóch instancjach klas 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;
    }

    ...
}

W kodzie klienta najpierw musisz utworzyć Connection instancja obiektu. Następnie musisz rozpocząć transakcję za pomocą conn.setAutoCommit(false); . Przekaż Connection wystąpienia obiektu do obu klas DAO. Jeśli w żadnej operacji nie wystąpią żadne błędy, conn.commit(); , w przeciwnym razie conn.rollback();

np.:

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. Jak mogę włączyć powolny dziennik zapytań MySQL bez ponownego uruchamiania MySQL?

  2. Dlaczego domyślnym sortowaniem MySQL jest latin1_swedish_ci?

  3. Hibernate — nie udało się leniwie zainicjować kolekcji ról:beans.Language.patients, nie można zainicjować serwera proxy — brak sesji

  4. Highchart - Wyświetlanie danych JSON - MYSQL / PHP

  5. jak mogę liczyć status zmieniony/zaktualizowany według kategorii dla konkretnego miesiąca?