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