【发布时间】:2010-09-11 14:52:18
【问题描述】:
我对 Servlet 和 JSP 以及使用数据库非常陌生。
目前,我的网络应用程序的“模型”部分中有一个类,其中包含我编写的许多方法来执行数据库查询和更新。目前,在每种方法中,我都在创建数据库连接,执行 SQL 操作,然后关闭连接。
当我只是为自己制作小应用程序时,这很好用,但我开始意识到,如果很多人同时使用我的应用程序,那么创建数据库连接并为每种方法关闭它们就会变得很明显通话是一个耗时的过程。所以我需要改变我做事的方式。
在 Basham、Sierra 和 Bates 的 Head First Servlet 和 JSP 中,他们描述了如何使用 ServletContextListener 实现在 Web 应用程序的部署上创建一个对象,该对象将作为 ServletContext 的属性添加。作者没有深入探讨,但暗示人们经常将数据库连接添加为 ServletContext 的属性。我以为我想为自己实现这个,但在阅读this stackoverflow article on database connection management 之后我不太确定。
但是,由于我只是从 servlet 和 JSP 开始,更不用说 J2EE 的其余部分了,那篇文章的很多内容都超出了我的理解范围。
那篇文章让我印象深刻的观点是:
可能会发生破坏该数据库连接的事情,如果我们仅依赖该连接,那么我们需要重新部署我们的应用程序以重新启动连接。这是正确的吗?
我们应该回复容器来为我们管理数据库连接。很好,但是这是如何实现的?如何与容器通信? (请记住,我刚刚开始使用 Servlet 和 JSP)。
就一般的 Servlet 设计而言,每个请求类型都有一个 servlet 类,并且通常只有一种类型的数据库调用,即特定的更新或查询。与其拥有一个包含所有查询数据库方法的类,不如将这些方法放在各自的 servlet 中,还是违反模型-视图-控制器模式?
我无法想象我会遇到太多问题,因为太多的用户会减慢用户体验 :) 但如果可能的话,我想开始做正确的事情。
非常感谢您的 cmets
乔
【问题讨论】:
标签: java mysql database-connection