簡體   English   中英

使用HikariCP配置Hibernate

[英]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

從版本1.2.6開始, HikariCP現在通過ConnectionProvider顯式支持Hibernate 4.x. 有關詳細信息,請參閱新的wiki文檔

更新:請參閱下面的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM