Abrimos transacciones en modo de solo lectura y luego las convertimos a modo de escritura, ya que las conexiones de solo lectura no serán un problema como lo es con salve DB.
Anulamos la HibernateTemplate clase y crear métodos para hacer sesión en modo escritura
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);
}
};
En la lógica de la aplicación, antes de escribir, verificamos
La conexión está en modo de escritura y luego simplemente escribe.
De lo contrario, si la conexión es de solo lectura, primero hágala en modo de escritura, realice la operación de escritura y nuevamente vuelva a solo lectura