トランザクションを読み取り専用モードで開き、書き込みモードに変換します。読み取り専用接続は、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);
}
};
でセッションを作成するためのメソッドを作成します。
else接続が読み取り専用の場合は、最初に書き込みモードにし、書き込み操作を行い、再び読み取り専用にします。
トランザクションが書き込みを行う必要がある場合は、読み取り専用モードで開くことはできません。それはそれと同じくらい簡単です。 Hibernateは書かれる必要があるものだけを書込み、読取り専用トランザクションは読取り/書込みトランザクションよりはるかに高速ではありません。途中で最適化しようとしないでください。 –
少数のトランザクションにおいて、それらは書き込む必要はない。すなわち、わずかな条件または読みに基づいて書き込みは任意である。 – mtariq
この質問に対する解決策を見つけましたか? –