【问题标题】:MongoDB object instanceMongoDB 对象实例
【发布时间】:2012-02-06 03:39:02
【问题描述】:

我之前没有任何数据库经验,但我必须将它用于我正在构建的应用程序,我选择了 MongoDB。

现在一切正常,但每次我必须向数据库发出请求时,我都会创建一个新的 Mongo 对象,我知道这是错误的。

所以我想问问并了解正确的方法是什么,我在一个名为 MongoDbConnnection 的类中有如下代码:

public class MongoDbConnection {
    private static Mongo _mongo;
        public static Mongo getMongo()
        {
            if (_mongo == null) {
            try {
                    _mongo = new Mongo();
                } catch (UnknownHostException e) {
                    _mongo = null;
                    e.printStackTrace();
                } catch (MongoException e) {
                    _mongo = null;
                    e.printStackTrace();
                }
            }
        return _mongo;
    }
}

所以每次我需要查询时,我都会输入Mongo m = MongoDbConnnection.getMongo(); 并继续前进。

这对吗?

我也对何时关闭连接感到困惑,因为我有另一个扩展 HttpServlet 的类并将响应 GET,每次有人请求该 url 时,我都必须查询数据库并返回信息。如果我在响应一个请求后立即关闭,如果其他人在此之后再次请求它怎么办。那我又要新建一个Mongo对象了?

换句话说,我知道 Mongo 实例维护一个连接轮询,所以当我调用 m.close() 时,我只是替换我使用的连接,还是将对象 m 设置为 null?

【问题讨论】:

    标签: java mongodb mongodb-java database


    【解决方案1】:

    是的,您主要从为您维护的连接池中获取连接:

    Mongo m = new Mongo();
    DB db = m.getDB( "mydb" );
    

    你只需要一个 Mongo 对象,它是线程安全的。

    我没有详细研究实现,但你必须调用

    db.close() from your code. 
    

    这只会将连接返回到池中,而不是关闭它。 如果您忘记这样做,我想在 Mongo 对象意识到不再使用连接之前需要时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多