数据库连接应该是单例吗?

用Java创建单例的最佳方法是什么?数据库连接是否应该是单例连接(单例连接是自动线程安全的)?因为理论上数据库不能被许多用户同时访问。

回答:

数据库连接通常不应为单例。

两个原因:

  1. 许多数据库驱动程序不是线程安全的。使用单例意味着如果您有多个线程,它们将共享同一连接。单例模式不会给您带来安全感。它仅允许许多线程轻松共享“全局”实例。
  2. 就我个人而言,我认为Singleton通常会导致不良设计:请参阅此帖子(由其他人发表)http://tech.puredanger.com/2007/07/03/pattern-hate-singleton/

而不是考虑数据库池。池是共享的(如果需要,可以是单例)。当您需要执行数据库工作时,请执行以下操作:

getConnectioFromPool();

doWork()

closeConnection() // releases back to pool

样本池库:

  • http://commons.apache.org/dbcp/
  • http://jolbox.com/

以上是 数据库连接应该是单例吗? 的全部内容, 来源链接: utcz.com/qa/422249.html

回到顶部