Hibernate C3P0ConnectionProvider not picked up



我正在尝试为hibernate应用程序配置C3P0连接池。

我正在使用以下依赖项。

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.5.6.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>5.5.6.Final</version>
</dependency>

我在hibernate.cft.xml中添加了以下配置

<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.acquire_increment">5</property>
<property name="hibernate.c3p0.timeout">1800</property>

但我得到了以下警告:

WARN: HHH000022: c3p0 properties were encountered, but the c3p0 provider class was not found on the classpath; these properties are going to be ignored

如果我像下面给出的那样显式指定提供者类,它就可以工作了。

<property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>

但是上面类的文档中说,默认情况下应该选择它。

使用C3P0连接池的连接提供程序。休眠将如果设置了hibernate.c3p0.*属性,则默认情况下使用此选项。

为什么默认情况下不选择该类?明确指定org.hibernate.c3p0.internal.C3P0ConnectionProvider是否正确?看起来org.hibernate.connection.C3P0ConnectionProvider是默认选择的类,在web中找到的大多数引用都是关于它的,但它在上述maven依赖关系中不可用。

从属性名称中删除hibernate.,它应该是:

<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

最新更新