Vi öppnar transaktioner i skrivskyddat läge och konverterar det sedan till skrivläge eftersom skrivskyddade anslutningar inte kommer att vara ett problem som det är med salve DB.
Vi åsidosätter HibernateTemplate klass och skapa metoder för att göra session i skrivläge
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);
}
};
I applikationslogik före skrivning kontrollerar vi
Anslutningen är i skrivläge och skriv sedan helt enkelt.
om anslutningen är skrivskyddad, gör du den först i skrivläge, gör skrivoperation och återställ den till skrivskyddad igen