Hibernate从DataSource获取连接,使用它们,然后关闭连接。如果没有连接池,这将非常低效,无论您使用哪种数据库服务器,都会消耗大量资源,包括您的应用程序和DBMS。您应该尝试使用Apache-Jakarta的commons-dbcp,它非常高效且设置非常简单,它依赖于commons-pool。 你只需定义一个带有DBCP的BasicDataSource,它将管理从任何JDBC驱动程序告诉它要使用的连接。它具有连接验证和许多其他功能。 或者,如果您正在编写Web应用程序,请在要使用的容器上配置连接池,并使用该池,而不是定义自己的池。
你正在比较苹果和橙子:1. 如果你想要比较不同ORM工具在相同数据库下的性能,请比较这些ORM工具。 2. 如果你想要比较不同连接池库在相同数据库下的表现,请比较这些连接池库。使用ORM会增加额外的努力,因此它永远不会像直接使用JDBC访问那样快。尽管如此,Hibernate非常成功地尽力减少了这种额外的开销。使用ORM时,您将以相对较小的性能损失为代价显著提高开发生产力。连接池是与ORM无关的问题。最明显的是,Hibernate允许您选择自己的连接池基础架构。此外,请注意,在实践中,连接池和事务管理之间通常存在相当紧密的耦合。例如,典型的J2EE应用程序将把连接池留给容器(通过JDBC数据源API)并依赖声明式事务。在这种情况下,连接和事务被(大约)一起管理。如果您不在J2EE容器内并且不需要ORM,则可以简单地比较C3P0、commons-pool等。