java如何在JPA/Hibernate应用程序中配置连接池(没有Spring)?
持久性。xml
<properties>
<property name='javax.persistence.jdbc.driver' value='org.postgresql.Driver' />
<property name='javax.persistence.jdbc.url'
value='jdbc:postgresql://192.168.19.66:5432/service1' />
<property name='javax.persistence.jdbc.user' value='postgres' />
<property name='javax.persistence.jdbc.password' value='root' />
<property name='hibernate.dialect' value='org.hibernate.dialect.PostgreSQLDialect' />
<property name='hibernate.connection.shutdown' value='true' />
<property name='hibernate.hbm2ddl.auto' value='none' />
<property name='hibernate.show_sql' value='false' />
<property name='hibernate.format_sql' value='false' />
<!-- Connection Pooling -->
<property name="hibernate.connection.provider_class"
value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider" />
<property name="hibernate.c3p0.max_size" value="100" />
<property name="hibernate.c3p0.min_size" value="5" />
<property name="hibernate.c3p0.acquire_increment" value="5" />
<property name="hibernate.c3p0.idle_test_period" value="500" />
<property name="hibernate.c3p0.max_statements" value="50" />
<property name="hibernate.c3p0.timeout" value="10000" />
</properties>
例外情况
[C3P0PooledConnectionPoolManager[identityToken->1hge4qw8wh4gndjoawud4|b81be4]-AdminTaskTimer] DEBUG com.mchange.v2.async.ThreadPoolAsynchronousRunner - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@5d1aef -- Running DeadlockDetector[Exiting. No pending tasks.]
[C3P0PooledConnectionPoolManager[identityToken->1hge4qw8wh4gndjoawud4|b81be4]-AdminTaskTimer] DEBUG com.mchange.v2.resourcepool.BasicResourcePool - Continuing acquisition series. pending_acquires [5], attempts_remaining: 20
[C3P0PooledConnectionPoolManager[identityToken->1hge4qw8wh4gndjoawud4|b81be4]-AdminTaskTimer] DEBUG com.mchange.v2.async.ThreadPoolAsynchronousRunner - com.mchange.v2.async.ThreadPoolAsynchronousRunner@b66600: Adding task to queue -- com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@934847
[C3P0PooledConnectionPoolManager[identityToken->1hge4qw8wh4gndjoawud4|b81be4]-HelperThread-#0] DEBUG com.mchange.v2.resourcepool.BasicResourcePool - An exception occurred while acquiring a poolable resource. Will retry.
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(DriverManager.java:264)
at com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:240)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648)
获取异常java。sql。SQLException:没有合适的驱动程序
当我查看源代码时,它正在查找属性“hibernate.connection.driver\u class”。我已经在“javax.persistence.jdbc.driver”中提到了驱动程序类
我认为配置连接池的方法不对。该应用程序使用的是Hibernate4.1.11(没有spring)、JPA2、PostgreSQL9.1。没有冬眠。cfg。xml
问题
- 在Hibernate/JPA应用程序中配置连接池的方法是什么李>
- 我已经用javax提供了。坚持不懈jdbc。驾驶员如果我提供
hibernate.connection.driver_class
属性,连接池和JPA连接创建的连接是相同还是不同李>
注意
- Postgresql驱动程序位于类路径中李>
- 如果我删除
<!-- Connection Pooling -->
之后的行,它将运行。但是,如果我在连接池的<!-- Connection Pooling -->
之后添加行,就会得到这个异常李>
# 1 楼答案
回到过去,必须使用
Class.forName(org.postgresql.Driver.class)
构造加载适当的驱动程序类。对于JDBC 4.0驱动程序,不再需要它了——但您可以尝试一下或者,尝试用
-Djdbc.drivers=org.postgresql.Driver
启动应用程序,它实际上与Class.forName
代码片段相同,但不需要硬编码驱动程序类。希望有帮助# 2 楼答案
从答案来看
https://stackoverflow.com/a/10899364/112500
我能解决这个问题
在把这行代码发送到c3p0配置之后。xml