【发布时间】:2013-04-02 07:38:38
【问题描述】:
Hibernate 默认使用连接池吗?如果是这样,*connection.pool_size* 的默认值是多少? 它不会与 *hibernate.connection.release_mode* 冲突吗?连接池的全部想法不是关闭连接吗?
【问题讨论】:
标签: hibernate connection-pooling
Hibernate 默认使用连接池吗?如果是这样,*connection.pool_size* 的默认值是多少? 它不会与 *hibernate.connection.release_mode* 冲突吗?连接池的全部想法不是关闭连接吗?
【问题讨论】:
标签: hibernate connection-pooling
默认休眠连接池(不应在生产中使用)的默认限制为 1,因为它仅用于简单测试。但是,这可以通过 hibernate.properties 文件进行配置,因此值得检查它是否已在您的项目中定义。
有问题的属性是:
hibernate.connection.pool_size
这方面的信息主要包含在此链接中:
http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html
虽然它没有直接指定默认连接池大小,但它确实包含您可能想要的关于休眠中的连接池主题的大部分信息。
【讨论】:
By default,Hibernate 提供了通过适当设置属性从 JNDI 获取数据源实现 (javax.sql.DataSource) 的能力:
默认的 JNDI 连接池 maxsize 是 -No Maximum Size
这里你可以找到JNDI池的默认值。
http://docs.oracle.com/javase/jndi/tutorial/ldap/connect/config.html
为了获得高效的性能,您应该使用third party pool 以获得最佳性能和稳定性。
如果您使用的是应用程序服务器,您可能希望使用内置池(通常使用 JNDI 获取连接)。如果您不能或不想使用应用服务器的内置连接池,Hibernate 支持其他几个连接池,例如
c3p0
Apache DBCP
Proxool
http://www.informit.com/articles/article.aspx?p=353736&seqNum=4
【讨论】:
我没有找到关于连接池的 Hibernate 默认值的文档,所以我查看了源代码并找到了(类 DriverManagerConnectionProviderImpl 在 hibernate-core-4.3.8.Final):
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;
【讨论】: