找到hibernate正在使用的连接池

时间:2013-10-03 10:41:08

标签: java hibernate c3p0

如何在不查看hibernate配置的情况下找到hibernate在运行时使用的连接池? 是否有像“getConnectionPoolUsed()”这样的API返回hibernate正在使用的连接池?

3 个答案:

答案 0 :(得分:2)

我在javadocs中找不到任何这样的方法。而且我找不到任何返回ConnectionProvider的公开方法。 (有一些不赞成的方法,以及“内部”类的一些方法,但你不应该使用它们。)

IMO,干净的解决方案是查看配置。

答案 1 :(得分:1)

要使用 C3P0ConnectionProvider ,您需要 hibernate-c3p0.jar (可用here

然后在 hibernate.cfg.xml

中配置以下属性
    <property name="hibernate.connection.pool_size">10</property>

    <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>

没有必要指定* hibernate.connection.provider_class *,只要有任何 hibernate.c3p0.x 属性,Hibernate就会使用C3P0。

这些值只是一个示例,您应该使用最适合您需求的配置。

答案 2 :(得分:0)

没有这样的API。你可以用反射来做(但这对于这个答案来说太深了。)

也许你应该问问自己为什么要这样。