我对Hibernate非常陌生,刚刚开始研究将其与MySQL数据库一起使用的Web应用程序。我注意到社区文档教程指出:
内置的Hibernate连接池绝不用于生产用途。它缺乏在任何体面的连接池中都能找到的若干功能。
有人可以详细说明吗?它到底缺失了什么?人们对“默认”有什么问题?在谷歌搜索时,我在这里找到了一个网站,但它并没有真正解释问题,只是您应该使用的是什么。
什么是连接池?为什么默认的连接池不适合生产?有人可以详细说明吗?
连接池是一种打开/准备/关闭连接的技术。连接池机制是软件(组件)的一部分,您可以在其中委派管理连接的功能。您的应用程序只会请求一个连接,使用它,然后将其传递回池中。该组件负责打开N个连接,并在您的应用程序要求时为它们准备就绪。如果连接陈旧,则池化机制将关闭该连接并重新打开一个新连接。这代表了连接的一种更好的用法,因为您无需在代码的实际执行过程中等待连接的建立,也不必担心过时的连接。
Hibernate实际上并没有提供任何真正的连接池机制。它提供了一个非常基本的内部连接管理器。原因很简单:默认情况下,几乎(如果不是全部)应用程序服务器(如JBoss AS)和Servlet容器(如Tomcat)提供连接池机制。因此,您的应用程序不必担心有关它的细节。它只是要求AS建立连接。
我认为,只有两种情况需要担心连接池:
但是以我的经验,大多数使用“外部”连接池的人都是这样做的,因为他们缺乏对连接池的了解 ,也 缺乏对容器的了解。