java - 如何使用单例来管理数据库连接?

标签 java database design-patterns database-design singleton

这可能是一个很老的、被问过很多次的问题。但是我找不到合适的答案,所以再问一次。

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

我知道这是一个愚蠢的问题,但我真的很困惑。谁能给个引用阅读链接就好了。

谢谢。

最佳答案

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

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

顺便提一下关于

的争论

“这是为了确保始终只有一个 Activity 连接到您的数据库”

是虚假和误导性的。如果长时间处于非 Activity 状态,很可能会关闭/回收连接。因此,缓存与数据库的连接是不受欢迎的。这个论点有一个偏差;只要您使用相同的上下文,即在相同的 HTTP 请求或用户请求(以适用者为准)内,就鼓励“重新使用”从连接池获得的连接。从性能的角度来看,这样做很明显,因为建立新连接可能是一项昂贵的操作。

关于java - 如何使用单例来管理数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5575749/

相关文章:

database - 在Clickhouse Docker容器中访问用户文件users.xml?

php - 未定义索引 - 安全风险与性能与代码膨胀

java - 使用 Netty 进行编写的有效方法

java - SWT - 获取当前日期并附加到字符串中

database - 是否可以根据退出/进入数量的数据估计平均访问者持续时间?

MYSQL从连接表中选择最大日期

c# - 需要接口(interface)方面的建议

java - 静态工厂方法的实际用例?

java - JPA直接返回query.getSingleResult()时返回null

java - 将java程序连接到sqlite