Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jak przekonwertować sesję hibernacji tylko do odczytu na zapis podczas transakcji (DB Master/Slave)

Otwieramy transakcje w trybie tylko do odczytu, a następnie konwertujemy je do trybu zapisu, ponieważ połączenia tylko do odczytu nie będą stanowić problemu, jak to ma miejsce w przypadku salve DB.

Zastępujemy HibernateTemplate klasę i tworzenie metod, aby nawiązać sesję w trybie zapisu

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

W logice aplikacji przed zapisem sprawdzamy,
Połączenie jest w trybie zapisu, a następnie po prostu pisz.
W przeciwnym razie jeśli połączenie jest tylko do odczytu, najpierw przeprowadź go w trybie zapisu, wykonaj operację zapisu i ponownie wróć do trybu tylko do odczytu




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL — WYBIERZ * DO WYJŚCIA LOKALNEGO ?

  2. MySQL:ORDER BY z pustą datą '0000-00-00' jako ostatnią, ale reszta ASC

  3. Jakiego typu danych należy użyć w opisie?

  4. Skonfiguruj dużą bazę danych w MySQL do analizy w R

  5. Przełącz z JsonStringType na JsonBinaryType, gdy projekt używa zarówno MySQL, jak i PostgreSQL