单身如何用于管理数据库连接?

Bhu*_*han 2 java database singleton database-design design-patterns

这可能是一个非常古老,多次被问到的问题.但我无法找到合适的答案,所以再问一遍.

对于数据库连接,我们总是使用单例对象.当数千名用户访问数据库时,如何保持性能?我的意思是,如果每秒有数千个请求,那么如何管理数据库连接,因为我们使用的是单例?数据库请求是否已序列化?或者在这些情况下不使用单身人士?

我知道这是一个愚蠢的问题,但我很困惑.如果有人可以提供一些参考阅读链接,那将是很好的.

谢谢.

dev*_*per 5

我不确定你是否混淆了普通单例与服务定位器的使用.它们都是设计模式.应用程序使用服务定位器模式来确保委托负责获取和提供对数据库,文件,JMS队列等的访问的单个类.

大多数服务定位器都实现为单例,因为不需要多个服务定位器来完成相同的工作.此外,缓存从第一次查找获得的信息是有用的,该信息稍后可以由服务定位器的其他客户端使用.

顺便说一下,关于的论点

"这是为了确保始终只有一个活动连接到您的数据库"

是虚假和误导.如果在很长一段时间内保持不活动状态,很可能会关闭/回收连接.因此,不赞成缓存与数据库的连接.这个论点有一个偏差; 只要您使用相同的上下文,即在同一HTTP请求或用户请求(以适用者为准)中,就会鼓励"重新使用"从连接池获得的连接.从性能的角度来看,这显然是完成的,因为建立新的连接可以证明是一项昂贵的操作.