我需要明确关闭连接吗?

dan*_*eln 21 java mongodb

我在我的应用程序中持有一个MongoClient和一个实例DB,每次我想执行一些操作时我都会调用getCollection().
我想知道是否需要显式关闭连接,就像connection.close()在JDBC中一样.

要强调,我只有一个MongoClient例子.我的问题不是关闭,MongoClient而是关闭我认为在我打电话时打开的连接getCollection().

Asy*_*sky 26

不,您不需要关闭与DB的连接 - 您唯一的连接是通过MongoClient并且如文档所述 - 它为您处理连接池.

您想要清理的唯一资源是一个光标,当您完成它时应该关闭().

  • 链接已损坏 (2认同)
  • https://docs.mongodb.com/manual/reference/method/cursor.close/ (2认同)

Mar*_*szS 6

如果你有很多 MongoClient,你应该关闭。

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

MongoClient.close() 清理资源

MongoClient.close() - 关闭底层连接器,进而关闭所有打开的连接。一旦被调用,这个 Mongo 实例就不能再使用了。

更多:http : //docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/

  • 我只有一个 MongoClient 实例。我的问题不是关闭 MongoClient 而是关闭连接,我相信它在我调用 getCollection 时打开。 (2认同)