【问题标题】:Which should be singleton in one application? MongoClient or MongoDatabase or MongoCollection?在一个应用程序中哪个应该是单例的? MongoClient 或 MongoDatabase 或 MongoCollection?
【发布时间】:2016-08-30 06:12:42
【问题描述】:

如文档中所述: http://mongodb.github.io/mongo-java-driver/3.3/driver/getting-started/quick-tour/

MongoClient 实例实际上代表了一个数据库连接池;即使有多个线程,您也只需要一个 MongoClient 类的实例。

使用下面的代码可以获得集合(就像RDMS中的'table'):

MongoDatabase database = mongoClient.getDatabase("mydb");
MongoCollection<Document> collection = database.getCollection("test");

我发现这些代码总是返回新的实例,那么,在我的应用程序中,将 MongoDatabaseMongoCollection 作为 Singleton 怎么样?

【问题讨论】:

    标签: java mongodb


    【解决方案1】:

    MongoClient 通常应该是单例。你的报价提到了这一点

    MongoClient 实例实际上代表一个连接池 数据库;你只需要一个 MongoClient 类的实例 即使有多个线程。

    javadocs 中也提到了这一点:

    具有内部连接池的 MongoDB 客户端。对于大多数 应用程序,您应该为整个应用程序拥有一个 MongoClient 实例 JVM。

    主要将 MongoDatabaseMongoCollection 作为单例是没有意义的(还有其他原因),因为底层连接可能会变得陈旧,这需要一些编码来刷新单例 MongoDatabase 或单例 MongoCollection。

    【讨论】:

      猜你喜欢
      • 2014-04-25
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 2011-03-11
      • 2012-02-07
      • 1970-01-01
      相关资源
      最近更新 更多