如何使用Hibernate设置MariaDb驱动程序属性

3
我正在使用Aurora MySQL数据库。我正在使用带有Hibernate的MariaDB Connector J。我正在使用"org.mariadb.jdbc.Driver"。我想使用Hibernate cfg文件设置此驱动程序的以下属性:
  1. 将连接设置为只读,以便从读取副本获取数据。
  2. 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
如果您还需要UTF-8,请在这里搜索“hibernate”。 - Rick James
1个回答

2

修改这些行

<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.connection.url">jdbc:mysql:aurora://xxxxx:3306/dbname</property>

to

<property name="dialect">org.hibernate.dialect.MariaDBDialect</property>
<property name="connection.url">jdbc:mariadb://xxxxxx:3306/dbname</property>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接