4

我正在更改我的 hibernate.cfg.xml 添加了新选项:

<property name="connection.driver_class">org.postgresql.Driver</property>
        <property name="show_sql">true</property>
        <property name="connection.url">jdbc:postgresql://localhost:5432/pirates</property>
        <property name="connection.username">postgres</property>
        <property name="connection.password">mmm888</property>

        <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="show_sql">false</property>
        <property name="hbm2ddl.auto">update</property>
        <property name="current_session_context_class">thread</property>

        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">200</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>
        <property name="hibernate.generate_statistics">true</property>

并在我的项目中添加了 hibernate-c3p0-4.1.4.Final.yar,但我不确定我使用的是 c3p0。我可以设置 hibernate.c3p0.max_size = 2 但 Hibernate 继续创建 400(例如 400)线程 - 如果需要的话。

如何检查我是否在休眠中使用 c3p0?

4

3 回答 3

3

你错过了这一行:

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

这告诉 Hibernate 使用 C3P0 连接池。

于 2013-04-29T09:51:51.453 回答
2

根据 C3P0ConnectionProvider 文档,不确定上述答案是否必要:

https://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/connection/C3P0ConnectionProvider.html

它说:

“使用 C3P0 连接池的连接提供程序。如果设置了 hibernate.c3p0.* 属性,Hibernate 将默认使用它。”

于 2015-03-08T11:12:50.350 回答
0

在这里检查。

一般来说,如果使用 Hibernate 提供的实现之一,应用程序不必显式配置 ConnectionProvider。Hibernate 将在内部根据以下算法确定使用哪个 ConnectionProvider:

如果设置了 hibernate.connection.provider_class,则优先

else if hibernate.connection.datasource is set → Using DataSources

否则,如果有任何以 hibernate.c3p0 为前缀的设置。已设置 → 使用 c3p0

否则,如果有任何以 hibernate.proxool 为前缀的设置。已设置 → 使用 Proxool

否则,如果有任何以 hibernate.hikari 为前缀的设置。已设置 → 使用 Hikari

else if hibernate.connection.url is set → Using Hibernate's built-in (and unsupported) pooling

else → 用户提供的连接

除此之外,最快的检查方法是进入数据库服务器,查看是否创建了空闲连接。

于 2018-01-30T03:20:30.163 回答