1

如何在不查看休眠配置的情况下找到休眠在运行时使用的连接池?是否有类似“getConnectionPoolUsed()”的 API 返回休眠使用的连接池?

4

3 回答 3

2

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

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

于 2013-10-03T11:05:44.780 回答
1

为了使用C3P0ConnectionProvider你需要hibernate-c3p0.jar在此处可用)

然后在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。

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

于 2014-04-10T09:34:33.953 回答
0

不,没有这样的 API。您可以使用反射来做到这一点(但这对于这个答案来说太深了)。

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

于 2013-10-03T11:16:16.250 回答