【问题标题】:Are JDBC connection pools singletons?JDBC 连接池是单例的吗?
【发布时间】:2013-02-18 21:51:55
【问题描述】:

我正在学习 JDBC,目前正在研究 JDBC 数据源和连接池。您是否需要确保您创建的数据源只在应用程序中创建一次,然后与所有需要引用数据源的类共享?或者它在幕后做了什么神奇的事情?

如果您在 Java EE 服务器或 Spring 中配置数据源,它是否只创建一个数据源对象? JNDI 中的对象是单例的,还是每次需要时都会获得一个新对象?

【问题讨论】:

    标签: java jdbc singleton connection-pooling


    【解决方案1】:

    DataSource 实例并不神奇。如果您创建其中两个,您将拥有两个,并且每个都有自己的连接池。使用 JNDI,您可以在名称下注册一个对象,因此根据定义,每次都会给出相同的对象。您可以认为它或多或少是夸大其词的HashMap。在 Spring 中,单例是默认范围,因此将创建一个 DataSource 并在使用它的所有对象之间共享,除非您更改 bean 的范围。

    【讨论】:

    • 好的,所以所有 JNDI 对象都是单例的......显然是因为你写了 new 关键字然后绑定它,对吧?
    • 是的,尽管您也可以使用 ObjectFactory 在 JNDI 中实现一些间接性,如果不将其视为单例,则可能会返回不同的实例,例如在 @987654322 中可能@.
    猜你喜欢
    • 2016-09-04
    • 1970-01-01
    • 2016-07-06
    • 2011-11-27
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    相关资源
    最近更新 更多