sql >> Databasteknik >  >> RDS >> Mysql

Transaktionshantering med DAOs

Om du använder vanlig JDBC kan du dela samma instans av Connection i de två instanserna av DAO-klasserna.

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;
    }

    ...
}

I klientkoden måste du först skapa en Connection objektinstans. Därefter måste du starta transaktionen med conn.setAutoCommit(false); . Skicka Connection objektinstans till båda DAO-klasserna. Om inga fel uppstår i någon operation, conn.commit(); , annars conn.rollback();

t.ex.:

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. Vad är Unique Constraint i SQL Server - SQL Server / TSQL Tutorial Del 95

  2. php artisan migrate throwing [PDO undantag] Kunde inte hitta drivrutinen - använder Laravel

  3. COALESCE-funktion i TSQL

  4. Använda Docker på Azure Container Service med Swarm Cluster