18

Hibernate 默认使用连接池吗?如果是这样,*connection.pool_size* 的默认值是多少?它不会与 *hibernate.connection.release_mode* 冲突吗?连接池的全部想法不是关闭连接吗?

4

3 回答 3

10

默认休眠连接池(不应在生产中使用)的默认限制为 1,因为它仅用于简单测试。然而,这可以通过 hibernate.properties 文件进行配置,因此值得检查它是否在您的项目中定义。

有问题的财产是:

hibernate.connection.pool_size

这方面的信息主要包含在此链接中:

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html

虽然这并没有直接指定默认连接池大小,但它确实包含您可能想要的关于 hibernate 中的连接池主题的大部分信息。

于 2013-04-02T13:36:28.893 回答
6

默认情况下,Hibernate 提供了通过适当设置属性从 JNDI 获取数据源实现 (javax.sql.DataSource) 的能力:

默认 JNDI 连接池最大大小为 -无最大大小

在这里您可以找到 JNDI 池的默认值。

http://docs.oracle.com/javase/jndi/tutorial/ldap/connect/config.html

为了获得高效的性能,您应该使用 athird party pool以获得最佳性能和稳定性。

如果您使用的是应用程序服务器,您可能希望使用内置池(通常使用 JNDI 获取连接)。如果您不能或不想使用应用程序服务器的内置连接池,Hibernate 支持其他几个连接池,例如

  • c3p0

  • Apache DBCP

  • Proxool

http://www.informit.com/articles/article.aspx?p=353736&seqNum=4

于 2013-04-02T08:39:57.473 回答
4

我没有找到关于连接池的 Hibernate 默认值的文档,所以我查看了源代码并找到了(hibernate-core-4.3.8.Final 中的类 DriverManagerConnectionProviderImpl):

hibernate.connection.initial_pool_size = 1;
hibernate.connection.min_pool_size = 1;
hibernate.connection.pool_size = 20;
hibernate.connection.pool_validation_interval = 30;
hibernate.connection.autocommit = false;
于 2018-03-16T17:42:17.987 回答