【发布时间】:2010-09-20 21:02:15
【问题描述】:
在不影响速度的情况下,在 hsqldb 中实现连接池的最佳方法是什么?
【问题讨论】:
标签: java database connection-pooling hsqldb
在不影响速度的情况下,在 hsqldb 中实现连接池的最佳方法是什么?
【问题讨论】:
标签: java database connection-pooling hsqldb
如果你使用Hibernate自带的连接池,你可以考虑使用c3p0? (如果你已经在使用 c3p0,我就帮不上忙了)我自己没有使用过 HSQLDB,但我认为这值得一试。
【讨论】:
你在比较苹果和橘子:
执行 ORM 会产生额外的工作量,因此它永远不会像直接 JDBC 访问那样快。也就是说,hibernate 竭尽全力(并且非常成功)来最小化这种额外的开销。使用 ORM,您可以在显着提高开发效率与相对较小的性能下降之间进行权衡。
连接池是 orm 的正交问题。最明显的是,hibernate 允许您选择自己的连接池基础架构。
另外,请注意,在实践中,连接池和事务管理之间通常存在相当紧密的耦合。例如,典型的 J2EE 应用程序会将连接池留给容器(通过 JDBC 数据源 API)并依赖于声明性事务。在这种情况下,连接和事务(大约)一起管理。
如果您不在 J2EE 容器中并且不需要 orm,我会简单地比较 C3P0、commons-pool 等。
【讨论】:
Hibernate 从DataSource 获取连接,使用它们并关闭它们。您需要一个连接池,否则效率会非常低,无论您使用哪种数据库服务器,都会在您的应用程序和 DBMS 上消耗大量资源。
您应该试试 Apache-Jakarta 的 commons-dbcp,它非常高效且设置起来非常简单。这取决于 commons-pool。
您只需使用 DBCP 定义一个BasicDataSource,它将管理您告诉它使用的任何 JDBC 驱动程序的连接。它有连接验证和许多其他的东西。
当然,如果您正在编写一个 Web 应用程序,请在您将使用的容器上配置一个连接池并使用它,而不是定义您自己的池。
【讨论】: