本文介绍了数据库连接应该是单例吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Java 中创建单例的最佳方式是什么?数据库连接是否应该是单例(作为单例,它自动是线程安全的)?因为理论上数据库不能被多个用户同时访问.
What is the best way in Java to create a singleton?Should a DB connection be a singleton (being a singleton it's automatically thread-safe)? Because theoretical the DB can't be accessed by many users in the same time.
推荐答案
DB 连接通常不应是单例.
A DB connection should not normally be a Singleton.
两个原因:
- 许多数据库驱动程序不是线程安全的.使用单例意味着如果您有许多线程,它们将共享相同的连接.单例模式不会为您提供线程安全性.它只是允许多个线程轻松共享一个全局"实例.
- 就我个人而言,我认为 Singleton 通常会导致糟糕的设计:请参阅这篇文章(由其他人撰写)http://tech.puredanger.com/2007/07/03/pattern-hate-singleton/
不要考虑使用数据库池.池是共享的(如果您愿意,可以是单例).当你需要做数据库工作时,你的代码会这样做:
Instead of doing this consider a database pool. The pool is shared (and could be a singleton if you wanted). When you need to do database work your code does this:
getConnectioFromPool();
doWork()
closeConnection() // releases back to pool
示例池库:
这篇关于数据库连接应该是单例吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!