首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java的会话.vs中保存conexion。连接池

问在Java的会话.vs中保存conexion。连接池
EN

Stack Overflow用户
提问于 2012-03-31 00:31:01
回答 2查看 394关注 0票数 1

我知道Java的session对象可以存储复杂的对象,比如到数据库的连接。

我正在考虑如何为使用Java编写的编程实践实现特定的应用程序。我的第一个选择是使用连接池,这在Java中非常简单。

出于好奇,我想知道,与使用连接池相比,在客户端启动会话并将其存储在数据库中时,创建到数据库的连接的优缺点是什么。

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-31 00:40:43

资源池将以您的系统可以处理的方式优化资源(数据库连接)的处理。即使您有大量打开的连接,也可能最终耗尽资源。

如果您将数据库连接存储在会话上下文中,则更有可能发生这种情况。Web应用程序不需要一直连接到数据库,这种连接可以在新操作开始时建立,在结束时关闭。使用资源池,当您不再需要它时,您可以将连接返回到池中,因此新用户( web范例中的会话)可以使用您已经释放的资源,而不是创建新的资源。

该池还将处理一些资源长时间空闲(在特定时间内没有人使用它们),然后释放这些资源的情况。

在会话中存储数据库连接时,您永远不会释放资源,而是保留对它的永久引用,该引用将持续到用户会话。你可能在短时间内不会遇到任何问题,特别是当同时连接的用户真的很少的时候。但在现实世界的应用程序中,您肯定会找到它们。

因此,在会话上下文中存储数据库连接被认为是一种不良实践。

编辑:我忘了提到应该只在会话中存储Serializable对象,因此,如果应用程序服务器决定钝化会话,则可以在应用程序服务器决定重新激活它时将其持久化和恢复。数据库连接不是Serializable资源。

票数 2
EN

Stack Overflow用户

发布于 2012-03-31 00:36:13

使用连接池可以最大限度地提高连接的可用性。这意味着更少的连接=更少的内存=更少的套接字等等。在会话中使用池比保存更好的原因是,如果有人意外退出,会发生什么?如果您的会话中有一个连接,您可能会冒着长时间保持该连接活动的风险,可能是无限期的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9946935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档