Apriamo le transazioni in modalità di sola lettura e quindi le convertiamo in modalità di scrittura poiché le connessioni di sola lettura non saranno un problema come lo è con salve DB.
Sovrascriviamo HibernateTemplate classe e creare metodi per rendere la sessione in modalità scrittura
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);
}
};
Nella logica dell'applicazione prima di scrivere controlliamo
La connessione è in modalità di scrittura, quindi scrivi semplicemente.
altrimenti se la connessione è di sola lettura, prima falla in modalità di scrittura, esegui l'operazione di scrittura e poi torna in sola lettura