【问题标题】:hibernate default connection pooling休眠默认连接池
【发布时间】:2013-04-02 07:38:38
【问题描述】:

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

【问题讨论】:

    标签: hibernate connection-pooling


    【解决方案1】:

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

    有问题的属性是:

    hibernate.connection.pool_size

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

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

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

    【讨论】:

    • 你能分享一下 hibernate.connection.pool_size=1 默认大小的来源吗?正如你在上面的链接中所说的那样。
    【解决方案2】:

    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

    【讨论】:

    • 这我知道,我的问题是默认行为是什么?没有配置任何关于连接池的内容。
    • 这没有回答问题。
    【解决方案3】:

    我没有找到关于连接池的 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;
    

    【讨论】:

      猜你喜欢
      • 2016-07-15
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      相关资源
      最近更新 更多