Hsqldb中的连接池技术

3

如何在不影响速度的情况下实现HSQLDB中的连接池?

3个回答

3
Hibernate从DataSource获取连接,使用它们,然后关闭连接。如果没有连接池,这将非常低效,无论您使用哪种数据库服务器,都会消耗大量资源,包括您的应用程序和DBMS。
您应该尝试使用Apache-Jakarta的commons-dbcp,它非常高效且设置非常简单,它依赖于commons-pool。 你只需定义一个带有DBCP的BasicDataSource,它将管理从任何JDBC驱动程序告诉它要使用的连接。它具有连接验证和许多其他功能。 或者,如果您正在编写Web应用程序,请在要使用的容器上配置连接池,并使用该池,而不是定义自己的池。

2
你正在比较苹果和橙子:
1. 如果你想要比较不同ORM工具在相同数据库下的性能,请比较这些ORM工具。 2. 如果你想要比较不同连接池库在相同数据库下的表现,请比较这些连接池库。
使用ORM会增加额外的努力,因此它永远不会像直接使用JDBC访问那样快。尽管如此,Hibernate非常成功地尽力减少了这种额外的开销。使用ORM时,您将以相对较小的性能损失为代价显著提高开发生产力。
连接池是与ORM无关的问题。最明显的是,Hibernate允许您选择自己的连接池基础架构。
此外,请注意,在实践中,连接池和事务管理之间通常存在相当紧密的耦合。例如,典型的J2EE应用程序将把连接池留给容器(通过JDBC数据源API)并依赖声明式事务。在这种情况下,连接和事务被(大约)一起管理。
如果您不在J2EE容器内并且不需要ORM,则可以简单地比较C3P0、commons-pool等。

我认为你没有正确解析这个问题。该声明(不评论其准确性)是,hsqldb具有比其他数据库更快的速度优势,但通过Hibernate去访问这些优势被抵消了。 - ykaganovich
实际上,这个问题并没有太多意义。他首先问什么连接池是最好的。然后他说了一些关于Hibernate的随机话语,似乎与你使用的连接池完全不相关。 - jsight

1
如果您使用了Hibernate自带的连接池,可以考虑使用c3p0。(如果您已经在使用c3p0,我就无法提供更多帮助了)我个人没有使用过HSQLDB,但我认为这值得一试。

我也有使用c3p0的积极经验。 - jsight

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接