Kami membuka transaksi dalam mode hanya baca dan kemudian mengubahnya menjadi mode tulis karena koneksi hanya baca tidak akan menjadi masalah seperti halnya dengan DB salve.
Kami mengganti HibernateTemplate kelas dan buat metode untuk membuat sesi dalam mode tulis
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);
}
};
Dalam logika aplikasi sebelum menulis kami memeriksa
Koneksi dalam mode tulis kemudian tulis saja.
jika koneksi hanya baca maka pertama buat dalam mode tulis, lakukan operasi tulis dan kembalikan kembali ke hanya baca