Экземпляр объекта MongoDB - PullRequest
       3

Экземпляр объекта MongoDB

0 голосов
/ 06 февраля 2012

У меня нет опыта работы с базой данных, но я должен использовать его для создаваемого приложения, и я выбираю 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 поддерживает опрос подключения, поэтому, когда я вызываю m.close (), я просто заменяю используемое подключение или устанавливаю для объекта m значение null?

1 Ответ

0 голосов
/ 06 февраля 2012

Да, вы в основном получаете соединение из пула поддерживаемых соединений:

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

Вам нужен только один объект Mongo, и он безопасен для потоков.

Я не рассматривал реализацию в деталях, но вы должны позвонить

db.close() from your code. 

Это просто возвращает соединение с пулом, а не закрывает его. Если вы забудете это сделать, я полагаю, что потребуется некоторое время, прежде чем объект Mongo осознает, что соединение больше не используется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...