2

我想设置一个 RDS 只读副本以将一些读取请求转发给它。我已经用以下方式注释了我所有的“读取” Dao 方法:

@Transactional(readOnly = true)

现在我正在为数据源配置而苦苦挣扎。我原以为这会很容易,但似乎并非如此。如何告诉数据源/休眠在某个端点上有可用的只读副本?

目前我的配置如下:

<bean id="mainDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql://${master-url}:3306/${db-name}?useSSL=true&amp;requireSSL=true&amp;verifyServerCertificate=false"/>
    <property name="user" value="${user}"/>
    <property name="password" value="${password}"/>
    <!--  these are C3P0 properties  -->
    <property name="acquireIncrement" value="3"/>
    <property name="minPoolSize" value="3"/>
    <property name="maxPoolSize" value="10"/>
    <property name="maxIdleTime" value="3600"/>
    <!--  1 hour  -->
    <property name="maxConnectionAge" value="7200"/>
    <property name="maxIdleTimeExcessConnections" value="600"/>
    <property name="idleConnectionTestPeriod" value="60"/>
    <property name="testConnectionOnCheckin" value="true"/>
    <property name="testConnectionOnCheckout" value="false"/>
    <property name="preferredTestQuery" value="SELECT 1"/>
</bean>

<bean id="mainSessionFactory" name="mainSessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" depends-on="mainDataSource">
    <property name="packagesToScan">
        <list>
            <value>com....</value>
        </list>
    </property>

    <property name="dataSource" ref="mainDataSource"/>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.connection.tinyInt1isBit">true</prop>
            <prop key="hibernate.connection.transformedBitIsBoolean">true</prop>
            <prop key="hibernate.hbm2ddl.auto">none</prop>
            <prop key="hibernate.show_sql">false</prop>
            <prop key="hibernate.connection.CharSet">UTF-8</prop>
            <prop key="hibernate.connection.characterEncoding">UTF-8</prop>
            <prop key="hibernate.connection.useUnicode">true</prop>
            <prop key="hibernate.jdbc.batch_size">40</prop>
        </props>
    </property>
</bean>

任何帮助/建议将不胜感激!

最好的问候,马克西姆

4

0 回答 0