在一个应用程序中哪个应该是单例? MongoClient或MongoDatabase还是MongoCollection?

时间:2016-08-30 06:12:42

标签: java mongodb

如文档中所述: 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");

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

1 个答案:

答案 0 :(得分:1)

MongoClient通常应该是单身人士。你的引用提到了这个

  

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

它还在javadocs

中提到了这一点
  

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

MongoDatabase MongoCollection 作为单例主要没有意义(还有其他原因),因为底层连接可能会过时,这需要一些编码来刷新单例MongoDatabase或单例MongoCollection。