我正在使用Aurora MySQL数据库。我正在使用带有Hibernate的MariaDB Connector J。我正在使用"org.mariadb.jdbc.Driver"。我想使用Hibernate cfg文件设置此驱动程序的以下属性:
我能够连接到Aurora MySQL,但无法将连接设置为只读。我的要求是,我想使用单个集群端点为只读副本创建连接以进行读取查询。
我参考了mariadb-connector-j。
我也在思考是否可以在Hibernate中使用MariaDB连接池,如果可以,该如何操作?
- 将连接设置为只读,以便从读取副本获取数据。
- MariaDB驱动程序的池化机制(minPoolSize,maxPoolSize等)。
hibernte.cfg.xml
<hibernate-configuration>
<session-factory>
<!-- SQL Dialect -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- Database Connection Settings -->
<property name="hibernate.connection.driver_class">org.mariadb.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:aurora://xxxxx:3306/dbname</property>
<property name="hibernate.connection.username">xxxxx</property>
<property name="hibernate.connection.password">xxxxx</property>
<property name="hibernate.connection.assureReadOnly">true</property>
<property name="hibernate.connection.autoReconnect">true</property>
<property name="hibernate.connection.autocommit">false</property>
<property name="hibernate.connection.maxPoolSize">5</property>
<property name="hibernate.connection.minPoolSize">2</property>
<property name="hibernate.connection.poolName">MyConnectionPool</property>
<property name="hibernate.connection.pool">true</property>
<property name="hibernate.connection.maxIdleTime">7000</property>
<property name="show_sql">true</property>
<!-- Specifying Session Context -->
<property name="hibernate.current_session_context_class">org.hibernate.context.internal.ThreadLocalSessionContext</property>
<!-- Mapping With Model Class Containing Annotations -->
<mapping class="com.xxx.aurora.beans.xxx" />
<mapping class="com.xxx.aurora.beans.User" />
</session-factory>
</hibernate-configuration>
我能够连接到Aurora MySQL,但无法将连接设置为只读。我的要求是,我想使用单个集群端点为只读副本创建连接以进行读取查询。
我参考了mariadb-connector-j。
我也在思考是否可以在Hibernate中使用MariaDB连接池,如果可以,该如何操作?
assureReadOnly: 如果为true,在高可用性并切换到只读主机时,通过将会话设置为只读来确保此主机处于只读模式。默认为false。自1.3.0以来
...也许你错过了Session.setDefaultReadOnly(true)
。 - Hackerman