在HttpSession中存储JDBC连接

jco*_*lin 5 java servlets jdbc

我最近继承了一些代码,我在其中发现了一个在过滤器中初始化的JDBC连接,并为每个用户添加了HttpSession.然后,在用户的Web应用程序的各个部分中重用该连接.这立即让我感觉像代码味道.我想回到编写它的开发人员并解释他为什么不应该这样做......但也许我不太确定自己......

除了在内存中占用不必要的空间并可能限制与数据库的可用连接之外,还有其他原因导致您不在会话中存储JDBC连接吗?

kro*_*ock 5

您已经提到了显而易见的,一个用户到一个数据库连接是不可扩展的.您的用户应与访问数据模型完全分离.以下是您将遇到的几个问题.

  • 如果连接变得陈旧,会发生什么?如果没有数据库连接,该用户将无法执行任何有用的操作,因此他们可能必须注销然后重新登录才能获得新连接.疯.
  • JDBC连接不是线程安全的.如果用户决定一次运行几件事,那么一切都会破裂.