Java 中创建单例的最佳方式是什么?
数据库连接应该是单例(作为单例它自动是线程安全的)?因为理论上数据库不能被许多用户同时访问。
数据库连接通常不应是单例。
两个原因:
- 许多数据库驱动程序都不是线程安全的。使用单例意味着如果您有许多线程,它们将共享相同的连接。单例模式不能保证线程安全。它仅仅允许许多线程轻松共享一个“全局”实例。
- 就我个人而言,我认为单例通常会导致糟糕的设计:请参阅这篇文章(由其他人撰写)http://tech.puredanger.com/2007/07/03/pattern-hate-singleton/ http://tech.puredanger.com/2007/07/03/pattern-hate-singleton/
不要这样做,请考虑使用数据库池。该池是共享的(如果您愿意,可以是单例)。当您需要执行数据库工作时,您的代码会执行以下操作:
getConnectioFromPool();
doWork()
closeConnection() // releases back to pool
样本池库:
- http://commons.apache.org/dbcp/ http://commons.apache.org/dbcp/
- http://jolbox.com/ http://jolbox.com/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)