当前位置: 首页 > 面试题库 >

Hibernate:什么是连接池?为什么默认的连接池不适合生产?

公孙涵育
2023-03-14
问题内容

我对Hibernate非常陌生,刚刚开始研究将其与MySQL数据库一起使用的Web应用程序。我注意到社区文档教程指出:

内置的Hibernate连接池绝不用于生产用途。它缺乏在任何体面的连接池中都能找到的若干功能。

有人可以详细说明吗?它到底缺失了什么?人们对“默认”有什么问题?在谷歌搜索时,我在这里找到了一个网站,但它并没有真正解释问题,只是您应该使用的是什么。


问题答案:

什么是连接池?为什么默认的连接池不适合生产?有人可以详细说明吗?

连接池是一种打开/准备/关闭连接的技术。连接池机制是软件(组件)的一部分,您可以在其中委派管理连接的功能。您的应用程序只会请求一个连接,使用它,然后将其传递回池中。该组件负责打开N个连接,并在您的应用程序要求时为它们准备就绪。如果连接陈旧,则池化机制将关闭该连接并重新打开一个新连接。这代表了连接的一种更好的用法,因为您无需在代码的实际执行过程中等待连接的建立,也不必担心过时的连接。

Hibernate实际上并没有提供任何真正的连接池机制。它提供了一个非常基本的内部连接管理器。原因很简单:默认情况下,几乎(如果不是全部)应用程序服务器(如JBoss
AS)和Servlet容器(如Tomcat)提供连接池机制。因此,您的应用程序不必担心有关它的细节。它只是要求AS建立连接。

我认为,只有两种情况需要担心连接池:

  1. 您正在处理一个独立的应用程序(该应用程序不在容器内运行)
  2. 您真的是连接池方面的专家,现有的都不适合您的需求。

但是以我的经验,大多数使用“外部”连接池的人都是这样做的,因为他们缺乏对连接池的了解 ,也 缺乏对容器的了解。



 类似资料:
  • 本文向大家介绍解释一下什么是池化设计思想。什么是数据库连接池?为什么需要数据库连接池?相关面试题,主要包含被问及解释一下什么是池化设计思想。什么是数据库连接池?为什么需要数据库连接池?时的应答技巧和注意事项,需要的朋友参考一下 池话设计应该不是一个新名词。我们常见的如java线程池、jdbc连接池、redis连接池等就是这类设计的代表实现。这种设计会初始预设资源,解决的问题就是抵消每次获取资源的消

  • 问题内容: 我似乎无法hibernate使用c3p0进行连接池,它说 hibernate配置: 问题答案:

  • 以下代码: hibernate.cfg.xml: hibernateutil.java: 为了获得最好的帮助,当我尝试连接this Web服务时,请在Android Studio中查看my应用程序的日志: org.hibernate.exception.internal.standardsqlexceptionconverter.convert(standardsqlexceptionconver

  • 问题内容: 使用JDBC连接池工具(如DBCP或c3p0)有什么好处? 如果只有 一个* 用户的 小型CRUD 应用程序,我们是否可以将 一个 连接会话创建为一个 单例 ? * PS :我正在构建一个带有小型数据库(5个表)的小型后端应用程序。 问题答案: 从Jon Skeet的答案到连接和语句池的好处是什么?: 创建到数据库服务器的网络连接是(相对)昂贵的。同样,要求服务器准备SQL语句(相对)

  • 我使用sbt start运行系统,并使用apache Benchmark进行测试: 问题是播放仅使用池中的7或8个连接,而其他mysql连接空闲,同时有请求,为什么?

  • 例如,有许多可用于java的数据库连接池实现;commons dbcp、commons-dbcp2(更新版本)、Hikari cp、tomcat jdbc连接池和c3p0。Wildfly允许在数据源(独立的*.xml)文件中的连接池中配置应用程序。但是想知道Wildfly是否使用了任何连接池实现?