【问题标题】:Connection pooling in hsqldbhsqldb 中的连接池
【发布时间】:2010-09-20 21:02:15
【问题描述】:

在不影响速度的情况下,在 hsqldb 中实现连接池的最佳方法是什么?

【问题讨论】:

    标签: java database connection-pooling hsqldb


    【解决方案1】:

    如果你使用Hibernate自带的连接池,你可以考虑使用c3p0? (如果你已经在使用 c3p0,我就帮不上忙了)我自己没有使用过 HSQLDB,但我认为这值得一试。

    【讨论】:

    • 我对 c3p0 也有过积极的体验。
    【解决方案2】:

    你在比较苹果和橘子:

    1. 如果您想要 orm 比较不同 orm 工具与相同数据库的性能。
    2. 如果您想要连接池,请将不同的连接池库与同一个数据库进行比较。

    执行 ORM 会产生额外的工作量,因此它永远不会像直接 JDBC 访问那样快。也就是说,hibernate 竭尽全力(并且非常成功)来最小化这种额外的开销。使用 ORM,您可以在显着提高开发效率与相对较小的性能下降之间进行权衡。

    连接池是 orm 的正交问题。最明显的是,hibernate 允许您选择自己的连接池基础架构。

    另外,请注意,在实践中,连接池和事务管理之间通常存在相当紧密的耦合。例如,典型的 J2EE 应用程序会将连接池留给容器(通过 JDBC 数据源 API)并依赖于声明性事务。在这种情况下,连接和事务(大约)一起管理。

    如果您不在 J2EE 容器中并且不需要 orm,我会简单地比较 C3P0、commons-pool 等。

    【讨论】:

    • 我认为您没有正确解析问题。声称(没有评论其准确性)是 hsqldb 比其他通过 Hibernate 否定的数据库具有速度优势。
    • 其实这个问题没有多大意义。首先他问什么连接池是最好的。然后他随机说了一些关于休眠的内容,这似乎与您使用的连接池无关。
    【解决方案3】:

    Hibernate 从DataSource 获取连接,使用它们并关闭它们。您需要一个连接池,否则效率会非常低,无论您使用哪种数据库服务器,都会在您的应用程序和 DBMS 上消耗大量资源。

    您应该试试 Apache-Jakarta 的 commons-dbcp,它非常高效且设置起来非常简单。这取决于 commons-pool。 您只需使用 DBCP 定义一个BasicDataSource,它将管理您告诉它使用的任何 JDBC 驱动程序的连接。它有连接验证和许多其他的东西。 当然,如果您正在编写一个 Web 应用程序,请在您将使用的容器上配置一个连接池并使用它,而不是定义您自己的池。

    【讨论】:

      猜你喜欢
      • 2014-08-21
      • 2018-09-10
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      • 2013-08-20
      • 2017-06-30
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多