[英]Configuring Hibernate with HikariCP
由於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嗎?
您可以使用hibernate-hikaricp
軟件包附帶的org.hibernate.hikaricp.internal.HikariCPConnectionProvider
。
您可以將其安裝為Maven依賴項(請不要忘記更新版本號):
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-hikaricp</artifactId>
<version>5.2.10.Final</version>
</dependency>
並在hibernate.properties中配置它:
`hibernate.connection.provider_class=org.hibernate.hikaricp.internal.HikariCPConnectionProvider`
請注意:從Hibernate 4.3.6開始,你不應再使用com.zaxxer.hikari.hibernate.HikariConnectionProvider
(參見: https : //github.com/brettwooldridge/HikariCP/wiki/Hibernate4 )
更新:請參閱下面的uwolfer答案,現在是將HikariCP與Hibernate一起使用的官方方式。
我是HikariCP的作者之一。 我並不認為自己是一個Spring人,幾年前我就離開了Hibernate,但這個鏈接可能會有所幫助:
http://www.luckyryan.com/2013/02/20/spring-mvc-with-basic-persistence-spring-data-jpa-hibernate/
在該頁面,在那里他們的例子使用BoneCP作為mainDataSource上的XML配置部分,只是嘗試配置替換該節HikariCP代替。
在上面的示例中,您似乎是通過Spring配置Hibernate並在Hibernate配置中定義DataSource
,這很好。 但另一種選擇(在該頁面上顯示)是通過Spring單獨配置DataSource
,然后指示Hibernate使用它。
關於語句緩存, HikariCP沒有這樣做,因為我們認為最好留給供應商的JDBC驅動程序/ DataSource。 幾乎每個主要數據庫供應商的JDBC DataSource
提供語句緩存,並且可以通過指定DataSource
屬性通過 HikariCP進行配置。 有關如何在底層(供應商) DataSource
上設置屬性,請參閱HikariCP github頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.