经常看见把SQL的连接写成单例模式,就认为可以节省内存开支和优化连接速度,更有认为这样会让数据库连接在高并发的情况下造成锁。其实并未真正体会到单例的使用场景。
从连接数据库上来说,单例模式连接数据库分为两部分:
- 得到数据库的认证和服务器信息-Datasource
- 连接数据库-Connecting
其实singleton只发生在第一步Datasource,只形成一个数据库配置实例。至于第二步Connecting和单例没有任何关系,而在高并发出现锁的时候推荐使用连接池才是正道。
只有把Connecting写进单例里,会出现一个连接的实例才会有这样的误解。