0

我之前没有任何数据库经验,但我必须将它用于我正在构建的应用程序,我选择了 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() 时,我只是替换我使用的连接,还是我将 object 设置m为 null?

4

1 回答 1

0

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

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

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

我没有详细研究实现,但你必须打电话

db.close() from your code. 

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

于 2012-02-06T03:52:58.533 回答