如果配置了 c3p0,connection.pool_size 会被忽略吗
if c3p0 is configured, will connection.pool_size be ignored
我将休眠与 c3p0 一起用于连接管理。在我的休眠配置中,我同时配置了 connection.pool_size
和 hibernate.c3p0.max_size
(使用不同的数字)。
据我所知,当我使用 c3p0 时,我的默认休眠连接管理将不会被使用。
但我不确定 hibernate.c3p0.max_size
是否是默认休眠池大小设置变量 connection.pool_size
的 c3p0 替换。
所以,我的问题是 - 我可以从配置中删除 connection.pool_size
吗?
如果我的配置文件中都有,connection.pool_size
会被完全忽略还是会被用于任何其他目的?
使用会话工厂为 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 以使配置设置清晰易懂。
您实际上应该从您的配置中删除 hibernate.connection.pool_size
,因为它已经被 cp30 的特定设置所取代 - 请参阅文档
Hibernate's own connection pooling algorithm is however quite rudimentary. It is intended to help you get started and is not intended for use in a production system or even for performance testing. You should use a third party pool for best performance and stability. Just replace the hibernate.connection.pool_size property with connection pool specific settings. This will turn off Hibernate's internal pool. For example, you might >like to use C3P0.
参考 - https://docs.jboss.org/hibernate/stable/core.old/reference/en/html/configuration-hibernatejdbc.html
更新
我了解到 Hikari CP 提供了比 C3P0 和其他数据库连接池工具更好的性能,并且 spring 引导原生支持 Hikari,因此您可以使用默认设置。但是,如果您想要调整默认值以满足您的特定用例,您可以这样做。
https://github.com/brettwooldridge/HikariCP
有关如何在 application.properties 中配置 Hikari 参数,请查看:https://gist.github.com/rhamedy/b3cb936061cc03acdfe21358b86a5bc6
我将休眠与 c3p0 一起用于连接管理。在我的休眠配置中,我同时配置了 connection.pool_size
和 hibernate.c3p0.max_size
(使用不同的数字)。
据我所知,当我使用 c3p0 时,我的默认休眠连接管理将不会被使用。
但我不确定 hibernate.c3p0.max_size
是否是默认休眠池大小设置变量 connection.pool_size
的 c3p0 替换。
所以,我的问题是 - 我可以从配置中删除 connection.pool_size
吗?
如果我的配置文件中都有,connection.pool_size
会被完全忽略还是会被用于任何其他目的?
使用会话工厂为 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 以使配置设置清晰易懂。
您实际上应该从您的配置中删除 hibernate.connection.pool_size
,因为它已经被 cp30 的特定设置所取代 - 请参阅文档
Hibernate's own connection pooling algorithm is however quite rudimentary. It is intended to help you get started and is not intended for use in a production system or even for performance testing. You should use a third party pool for best performance and stability. Just replace the hibernate.connection.pool_size property with connection pool specific settings. This will turn off Hibernate's internal pool. For example, you might >like to use C3P0.
参考 - https://docs.jboss.org/hibernate/stable/core.old/reference/en/html/configuration-hibernatejdbc.html
更新
我了解到 Hikari CP 提供了比 C3P0 和其他数据库连接池工具更好的性能,并且 spring 引导原生支持 Hikari,因此您可以使用默认设置。但是,如果您想要调整默认值以满足您的特定用例,您可以这样做。
https://github.com/brettwooldridge/HikariCP
有关如何在 application.properties 中配置 Hikari 参数,请查看:https://gist.github.com/rhamedy/b3cb936061cc03acdfe21358b86a5bc6