4

com.mysql.jdbc.ReplicationDriver を使用してマスター/スレーブを接続しています。transactionManager を次のように構成します。

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<tx:advice id="txHbAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="get*" read-only="true" />
    </tx:attributes>
</tx:advice>

java.sql.Connection.setReadonly()読み取り専用パラメーターを true に設定しましたが、メソッドが true に設定されません。すべての読み取りクエリは引き続きマスター サーバーに送信されます。

ここには、同様の問題に対する未解決の問題があります。この問題の解決策を持っている人はいますか?

4

1 に答える 1

-1

私の提案は、アノテーションの周りにアスペクトを記述し、現在実行中のセッションを取得してから→を@Transactional呼び出し、読み取り専用属性が設定されている場合は設定することです。私はこの解決策を試していませんが、うまくいくはずだと思います。doWork(Work work)connection.setReadOnly@transaction

Youuもこのソリューションを参照できます。

于 2012-07-16T08:08:47.390 に答える