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

管理Java Servlet的数据库连接的最佳方法

公冶鸣
2023-03-14
问题内容

在Java Servlet中管理数据库连接的最佳方法是什么?

当前,我只是在init()函数中打开一个连接,然后在中将其关闭destroy()

但是,我担心“永久地”保持数据库连接可能是一件坏事。

这是处理此问题的正确方法吗?如果没有,有什么更好的选择?

编辑:给出更多的说明:我尝试为每个请求简单地打开/关闭一个新连接,但是通过测试,由于创建了太多的连接,我看到了性能问题。

通过多个请求共享连接是否有任何价值?此应用程序的请求几乎都是“只读”的,并且响应速度很快(尽管请求的数据很小)。


问题答案:

我实际上不同意使用Commons DBCP。您应该真正依靠容器来为您管理连接池。

由于您使用的是Java Servlet,这意味着要在Servlet容器中运行,而我熟悉的所有主要Servlet容器都将提供连接池管理(Java
EE规范甚至可能要求它)。如果您的容器碰巧使用DBCP(就像Tomcat一样),那么很好,否则,请使用容器提供的任何东西。



 类似资料:
  • 我正在为员工管理系统创建一个web应用程序,使用ApacheTomcat作为HTTP服务器,Oracle作为数据库,applet用于客户端编程,servlet用于服务器端编程。我还想使用DBCP来管理与数据库的连接。 我希望执行查询的servlet使用客户端为连接输入的用户名和密码。但是到目前为止,我看到在中配置资源时必须设置连接池的用户名和密码。 有没有什么方法可以实现这一点并且仍然使用DBCP

  • 问题内容: 管理数据库更改的最佳方法是什么?无论数据库客户端的语言如何,我都需要一个解决方案。我还希望能够在那些更改中使用特定的数据库功能,例如存储过程,触发器等。 问题答案: 首先,请确保您已编写了完整的数据库构建脚本,以便可以根据需要重建数据库。 然后,应将每个更改写为更新脚本。这样,您可以针对数据库分别运行每个更改。 将更改提交到代码库后,将更改脚本与构建过程合并,使其自动发生…然后将更改脚

  • 我正在构建一个节点应用程序,它将查询简单的和更复杂的(多连接)查询。我正在寻找关于我应该如何管理mySQL连接的建议。 我有以下几个要素: server.js:express Router1.js(虚构名称):快速路由器中间件 Router2.js(虚构名称):快速路由器中间件 我是否应该在每次请求“/router1/”时都连接到mysql,就像本例中那样,还是最好在启动时保持一个连接打开?作为:

  • 问题内容: 我有一个用Go编写的Web服务,目前我将这个Global包导入到任何地方,其中包含与MongoDB的连接(通过MGO),但是我不得不说这对我来说非常讨厌。在Go中维护与数据源的连接的最佳实践是什么?我来自PHP世界,因此来自Global:S 问题答案: 导入一个将初始化对象导出为包级别变量或通过访问器/初始化程序导出的包没有错。后者也许对古典“ OOP主义者”更具吸引力。

  • 问题内容: 我正在使用Mongoose来管理Mongo数据库。我的连接文件非常简单: 然后在我的app.js中 并且“猫鼬”变量在全球范围内可用。我不想使用全局变量(至少不直接使用)。是否有更好的方法通过单例模式或其他方法在节点之间共享数据库连接变量(我正在使用express.js)? 问题答案: 我只是在app.js文件中执行以下操作: 此时,任何需要访问该模型的文件都可以执行以下操作: 最后,

  • 我正在创建一个多租户应用程序,在该应用程序中,我基于子域连接到该特定租户的数据库。 下面是执行此操作的代码: 这是连接数据库的最佳方式,还是存在任何问题,因为我是从性能的角度考虑的,因为每次连接数据库时都有不同的子域。最好的方法是什么?