如果配置了c3p0,则会忽略connection.pool_size

时间:2017-03-29 09:01:45

标签: java hibernate connection-pooling c3p0

我正在使用hibernate和c3p0进行连接管理。在我的休眠配置中,我配置了connection.pool_sizehibernate.c3p0.max_size(使用不同的数字)。

据我所知,当我使用c3p0时,我的默认hibernate连接管理将不会被使用。 但我不确定hibernate.c3p0.max_size是否是默认hibernate池大小设置变量的connection.pool_size的c3p0替换。

所以,我的查询是 - 我可以从配置中删除connection.pool_size吗? 如果我的配置文件中同时包含这两项内容,connection.pool_size是否会被完全忽略,还是会用于其他目的?

2 个答案:

答案 0 :(得分:2)

使用会话工厂为c3po定义配置后。 无需休眠默认设置。你应该删除它以避免混淆。

您的会话工厂配置如下所示:

   <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory>
  <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
  <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:ABCXYZ</property>
  <property name="hibernate.connection.username">myuser</property>
  <property name="hibernate.connection.password">password</property>
  <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
  <property name="hibernate.default_schema">SCHEMA_A</property>
  <property name="show_sql">true</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>

  <mapping class="com.ABCXYZ.user.DBUser"></mapping>
</session-factory>
</hibernate-configuration>

最好删除该connection.pool_size以使配置设置清晰易懂。

答案 1 :(得分:0)

您实际上应该从配置中删除 hibernate.connection.pool_size,因为它已经被 cp30 的特定设置所取代 - 请参阅文档

<块引用>

Hibernate 自己的连接池算法非常初级。它旨在帮助您入门,不适用于生产系统甚至性能测试。您应该使用第三方池以获得最佳性能和稳定性。 只需将 hibernate.connection.pool_size 属性替换为连接池特定设置。这将关闭 Hibernate 的内部池。例如,您可能>喜欢使用 C3P0。

参考 - https://docs.jboss.org/hibernate/stable/core.old/reference/en/html/configuration-hibernatejdbc.html

更新

我读到 Hikari CP 提供比 C3P0 和其他数据库连接池工具更好的性能,并且 Hikari 由 Spring Boot 原生支持,因此您可以使用默认值。但是,如果您想调整默认值以满足您的特定用例,您可以这样做。

https://github.com/brettwooldridge/HikariCP

有关如何在 application.properties 中配置 Hikari 参数,请检查:https://gist.github.com/rhamedy/b3cb936061cc03acdfe21358b86a5bc6