由于c3p0连接池的问题,我想看看替代方案,并决定哪一个可能更适合我的情况。HikariCP看起来很有前途,但没有文档如何使用它与Hibernate。
到目前为止,我使用c3p0如下:
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="persistenceUnit"/>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">${database.dialect}</prop>
<prop key="hibernate.hbm2ddl.auto">${database.structure}</prop>
<prop key="hibernate.connection.url">${database.connection}</prop>
<prop key="hibernate.connection.username">${database.username}</prop>
<prop key="hibernate.connection.password">${database.password}</prop>
<prop key="hibernate.connection.driver_class">${database.driver}</prop>
<prop key="hibernate.connection.shutdown">true</prop>
<prop key="hibernate.connection.writedelay">0</prop>
<prop key="hibernate.connection.characterEncoding">UTF-8</prop>
<prop key="hibernate.connection.charSet">UTF-8</prop>
<prop key="hibernate.show_sql">${database.show_sql}</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.ejb.metamodel.generation">disabled</prop>
<!-- Use the C3P0 connection pool provider -->
<prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>
<prop key="hibernate.c3p0.min_size">5</prop>
<prop key="hibernate.c3p0.max_size">30</prop>
<prop key="hibernate.c3p0.timeout">300</prop>
<prop key="hibernate.c3p0.max_statements">50</prop>
<prop key="hibernate.c3p0.idle_test_period">600</prop>
</props>
</property>
字符串
有人能告诉我如何以这种方式配置HikariCP吗?
3条答案
按热度按时间v64noz0r1#
您可以使用
hibernate-hikaricp
包附带的org.hibernate.hikaricp.internal.HikariCPConnectionProvider
。您可以将其安装为Maven依赖项(请不要忘记更新版本号):
字符串
然后在
hibernate.properties
文件中配置它,如下所示:型
请注意:从Hibernate 4.3.6开始,您应该不再使用
com.zaxxer.hikari.hibernate.HikariConnectionProvider
(参见:https://github.com/brettwooldridge/HikariCP/wiki/Hibernate4)91zkwejq2#
HikariCP,从1.2.6版开始,现在通过 ConnectionProvider 显式支持Hibernate 4.x。有关详细信息,请参阅新的wiki documentation。
rqmkfv5c3#
更新:参见下面uwolfer的回答,现在是将HikariCP与Hibernate一起使用的官方方式。
我是HikariCP的作者之一。我并不自称是Spring迷,几年前我就放弃了Hibernate,但这个链接可能会有帮助:
http://www.luckyryan.com/2013/02/20/spring-mvc-with-basic-persistence-spring-data-jpa-hibernate/
在该页面的XML配置部分,他们的示例使用 BoneCP 作为 mainDataSource,只需尝试将该部分替换为 HikariCP 的配置。
在上面的示例中,您似乎是通过Spring配置Hibernate,并在Hibernate配置中定义
DataSource
,这很好。但另一种选择(在该页面上提供)是通过Spring单独配置DataSource
,然后引导Hibernate使用它。关于语句缓存,HikariCP 并没有这样做,因为我们认为这最好留给供应商的JDBC驱动程序/数据源。几乎所有主要的数据库供应商的JDBC
DataSource
都提供语句缓存,并且可以通过 * HikariCP通过指定DataSource
属性来配置它。请参阅HikariCP github页面了解如何在底层(供应商)DataSource
上设置属性。