We openen transacties in de alleen-lezen modus en converteren deze vervolgens naar de schrijfmodus, omdat alleen-lezen verbindingen geen probleem zullen zijn zoals bij salve DB.
We overschrijven de HibernateTemplate class en maak methoden om een sessie in de schrijfmodus te maken
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);
}
};
In toepassingslogica controleren we voordat we schrijven
Verbinding in schrijfmodus staat en dan gewoon schrijven.
Anders, als de verbinding alleen-lezen is, zet deze dan eerst in de schrijfmodus, voer de schrijfbewerking uit en maak hem weer terug naar alleen-lezen