Отваряме транзакциите в режим само за четене и след това ги преобразуваме в режим на запис, тъй като връзките само за четене няма да бъдат проблем, както е с salve DB.
Ние отменяме HibernateTemplate клас и създаване на методи за създаване на сесия в режим на запис
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);
}
};
В логиката на приложението преди запис проверяваме
Връзката е в режим на запис, след което просто пише.
иначе ако връзката е само за четене, тогава първо я направете в режим на запис, направете операция за запис и отново я върнете в режим само за четене