Transakce otevíráme v režimu pouze pro čtení a poté je převádíme do režimu zápisu, protože připojení pouze pro čtení nebudou problémem, jako je tomu u salve DB.
Přepíšeme HibernateTemplate třídy a vytvořte metody pro vytvoření relace v režimu zápisu
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);
}
};
V aplikační logice před zápisem zkontrolujeme
Připojení je v režimu zápisu a poté jednoduše zapište.
jinak, pokud je připojení pouze pro čtení, nejprve jej přepněte do režimu zápisu, proveďte operaci zápisu a znovu jej převeďte zpět do režimu pouze pro čtení