【问题标题】:Do I need to explicitly close connection?我需要明确关闭连接吗?
【发布时间】:2013-11-25 03:09:48
【问题描述】:

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

强调一下,我只有一个MongoClient 实例。我的问题不是关闭MongoClient,而是关闭连接我相信它会在我打电话给getCollection()时打开。

【问题讨论】:

    标签: java mongodb


    【解决方案1】:

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

    您想要清理的唯一资源是cursor,当您完成它时您应该使用close()。

    【解决方案2】:

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

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

    MongoClient.close() 清理资源

    MongoClient.close() - 关闭底层连接器,依次关闭 关闭所有打开的连接。一旦调用,这个 Mongo 实例就不能 长期使用。

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

    【讨论】:

    • 当然,如果你有很多实例,而你的应用程序中没有很多 MongoDB 实例,那么这就是糟糕的编程
    • 我只有一个 MongoClient 实例。我的问题不是关于关闭 MongoClient 而是关闭我相信它在我调用 getCollection 时打开的连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多