【问题标题】:Hibernate c3p0 config parameters not getting affected at runtimeHibernate c3p0 配置参数在运行时不会受到影响
【发布时间】:2026-01-03 11:10:01
【问题描述】:

我正在使用 c3p0-0.9.1.2.jarhibernate 3.2.1。以下是休眠配置。

    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/oDB</property>
    <property name="hibernate.connection.username">oDBUser</property>
    <property name="hibernate.connection.zeroDateTimeBehavior">convertToNull</property>
    <property name="hibernate.connection.autoReconnect">true</property>

    <property name="c3p0.max_size">10</property>
    <property name="c3p0.min_size">4</property>
    <property name="c3p0.timeout">1800</property>
    <property name="c3p0.max_statements">200</property>
    <property name="c3p0.maxStatementsPerConnection">5</property>
    <property name="c3p0.idle_test_period">1500</property>
    <property name="c3p0.acquire_increment">2</property>
    <property name="c3p0.testConnectionOnCheckout">true</property>
    <property name="c3p0.preferredTestQuery">SELECT 1</property>

但我认为 maxStatementsPerConnection、testConnectionOnCheckout 和 preferredTestQuery 等参数在运行时没有任何影响。我应该为这些参数做其他事情吗?这是我在日志中得到的内容。

INFO 2010-11-06 19:04:37,364 初始化 c3p0 池... com.mchange.v2.c3p0.PoolBackedDataSource@e2da87d1 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@412cca1a [acquireIncrement -> 2、acquireRetryAttempts -> 30、acquireRetryDelay -> 1000、autoCommitOnClose -> false、automaticTestTable -> null、breakAfterAcquireFailure -> false、checkoutTimeout -> 0、connectionCustomizerClassName -> null、connectionTesterClassName -> com.mchange.v2.c3p0.impl。 DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> z8kfsx8c99kx7g8xqvs4|87400, idleConnectionTestPeriod -> 1500, initialPoolSize -> 4, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleExcessConnectionS1 -> 0, maxPoolSize -> 10, maxStatements -> 200, ma​​xStatementsPerConnection -> 0, minPoolSize -> 4, nestedDataSource -> com.mchange.v2.c3p0.DriverMa nagerDataSource@9d074b3f [描述-> null, driverClass -> null, factoryClassLocation -> null, identityToken -> z8kfsx8c99kx7g8xqvs4|b245dc, jdbcUrl -> jdbc:mysql://localhost:3306/oDB, properties -> {autoReconnect=true, user =*, password=*, zeroDateTimeBehavior=convertToNull} ], preferredTestQuery -> null, propertyCycle -> 0 , testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, factoryClassLocation -> null, identityToken -> z8kfsx8c99kx7g8xqvs4|93c5e7, numHelperThreads -> 3 ]

提前致谢。 古拉

【问题讨论】:

    标签: mysql hibernate c3p0


    【解决方案1】:

    但我认为 maxStatementsPerConnection、testConnectionOnCheckout 和 preferredTestQuery 等参数在运行时没有任何影响。我应该为这些参数做其他事情吗?

    它们不进入 Hibernate 配置文件,您需要提供一个c3p0.properties 文件。请参阅 C3P0 文档中的Appendix C: Hibernate-specific notes

    【讨论】: