sql >> Database >  >> RDS >> Mysql

Transactiebeheer met DAO's

Als u gewone JDBC gebruikt, kunt u hetzelfde exemplaar van Connection delen in de twee gevallen van de DAO-klassen.

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

    ...
}

In de klantcode moet u eerst een Connection . maken object instantie. Vervolgens moet u de transactie starten met conn.setAutoCommit(false); . Geef de Connection door object instantie naar de beide DAO-klassen. Als er geen fouten optreden in een bewerking, conn.commit(); , anders conn.rollback();

bijv.:

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. Hoe de tabelwaardeparameter te WIJZIGEN

  2. MySQL Boolean tinyint(1) bevat waarden tot 127?

  3. 12.2 RAC/GI Nieuwe functies

  4. MySQL versus SQL Server Express