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

hvordan man konverterer en skrivebeskyttet dvale-session til at skrive under en transaktion (Master/Slave DB)

Vi åbner transaktioner i skrivebeskyttet tilstand og konverterer den derefter til skrivetilstand, da skrivebeskyttede forbindelser ikke vil være et problem, som det er med salve DB.

Vi tilsidesætter HibernateTemplate klasse og opret metoder til at lave session i skrivetilstand

 public final void writeEnabled(){
    getSession().doWork(jdbcWorkWriteEnabled);
}

public final void writeDisabled(boolean flush){
    if(flush)
        flush();
    getSession().doWork(jdbcWorkWriteDisabled);
}

public static final void writeEnabled(Session session){
    session.doWork(jdbcWorkWriteEnabled);
}

public static final void writeDisabled(boolean flush,Session session){
    if(flush)
        session.flush();
    session.doWork(jdbcWorkWriteDisabled);
}

final static Work jdbcWorkWriteEnabled = new Work(){
    public void execute(Connection connection) throws SQLException {
        connection.setReadOnly(false);
    }
};

final static Work jdbcWorkWriteDisabled = new Work(){
    public void execute(Connection connection) throws SQLException {
        connection.setReadOnly(true);
    }
};

I applikationslogikken før skrivning tjekker vi
Forbindelsen er i skrivetilstand, og skriv derefter.
ellers hvis forbindelsen er skrivebeskyttet, så lav den først i skrivetilstand, lav skriveoperation og vend den tilbage til skrivebeskyttet igen




  1. Ruby - Undtagelse opstod:[Mysql2::Fejl] lukkede MySQL-forbindelsen

  2. Bedste måde at undgå duplikatindtastning i mysql-databasen

  3. Postgres SSLMode-værdi kræver ugyldig, når SSL-understøttelse ikke er kompileret ved hjælp af udenlandsk dataindpakning

  4. PHPExcel:Ugyldig cellekoordinatfejl