数据库连接应该是单例吗? [英] should a db connection be a singleton?

查看:24
本文介绍了数据库连接应该是单例吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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.

两个原因:

  1. 许多数据库驱动程序不是线程安全的.使用单例意味着如果您有许多线程,它们将共享相同的连接.单例模式不会为您提供线程安全性.它只是允许多个线程轻松共享一个全局"实例.
  2. 就我个人而言,我认为 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

示例池库:

这篇关于数据库连接应该是单例吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆