sql >> Database teknologi >  >> RDS >> Mysql

Transaktionsstyring med DAO'er

Hvis du bruger almindelig JDBC, kan du dele den samme forekomst af Connection i de to tilfælde af DAO-klasserne.

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 skal du først oprette en Connection objektforekomst. Dernæst skal du starte transaktionen med conn.setAutoCommit(false); . Send Connection objektforekomst til begge DAO-klasser. Hvis der ikke opstår fejl i nogen handling, conn.commit(); , ellers conn.rollback();

f.eks.:

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. Hvordan kan jeg rekursivt få det overordnede ID for rækker i denne MySQL-tabel?

  2. UNIX_TIMESTAMP i SQL Server

  3. Adgangskoden kontrollerer ikke følsomheden af ​​store og små bogstaver

  4. at vælge et specifikt tal som kolonneværdi i forespørgslen