【问题标题】:Configuring c3p0 property initialPoolSize and maxStatements using Hibernate使用 Hibernate 配置 c3p0 属性 initialPoolSize 和 maxStatements
【发布时间】:2015-02-14 18:38:52
【问题描述】:

我正在使用 Hibernate,并且我在其配置中配置了一些 c3p0 属性,如 hibernate documentation 之一中指定的那样。示例配置如下:

<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>

我开始知道 c3p0 有许多其他属性可以通过配置文件 c3p0.properties 设置,但不能通过 c3p0 Documentation 中的 initialPoolSize、maxStatementsPerConnection、acquireAttempts 等休眠配置进行设置。

我的问题是如何验证我在 c3p0.properties 中设置的属性是否实际被使用?一种解决方案是将日志启用到调试级别。有没有其他解决方案可以确认这一点?喜欢可能是通过某些类以编程方式。

【问题讨论】:

    标签: java hibernate configuration connection-pooling c3p0


    【解决方案1】:

    您无需在 C3P0 配置文件中设置它们。您可以将任何 C3P0 配置传递给 Hibernate 的配置,因为 Hibernate 会将所有以 hibernate.c3p0 前缀开头的设置传递给 C3P0。

    因此,您可以摆脱 c3p0.properties 并简单地添加新设置:

    <property name="hibernate.c3p0.initialPoolSize">1</property>
    <property name="hibernate.c3p0.maxStatementsPerConnection">10</property>
    <property name="hibernate.c3p0.acquireRetryAttempts">5</property>
    

    要查看 C3P0 配置,您可以使用 JMX client。如果您想监控连接池的使用情况并为不可预见的流量峰值提供回退机制,那么您应该查看FlexyPool

    【讨论】:

    • 谢谢伙计。因此,您的意思是,也可以传递未定义为 hibernate 一部分的 c3p0 的其他参数,并且由于它们的前缀为 c3p0,因此 hibernate 会将它们传递给 c3p0。请确认。
    • 请查看mchange.com/projects/c3p0/#hibernate-specific,有7个例外,包括initialPoolSize
    猜你喜欢
    • 2011-02-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多