Mysql
 sql >> база данни >  >> RDS >> Mysql

как да конвертирате сесия за хибернация само за четене в запис по време на транзакция (Master/Slave DB)

Отваряме транзакциите в режим само за четене и след това ги преобразуваме в режим на запис, тъй като връзките само за четене няма да бъдат проблем, както е с salve DB.

Ние отменяме HibernateTemplate клас и създаване на методи за създаване на сесия в режим на запис

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

В логиката на приложението преди запис проверяваме
Връзката е в режим на запис, след което просто пише.
иначе ако връзката е само за четене, тогава първо я направете в режим на запис, направете операция за запис и отново я върнете в режим само за четене




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. XML грешка при амперсанд (&)

  2. Как да напиша нулево безопасно сравнение <=> в чист SQL?

  3. Преминаване от MySQL 5.7 към MySQL 8.0 - Какво трябва да знаете

  4. Как да напиша заявка за присъединяване към MySQL

  5. mysql изберете горните n максимални стойности