2012-02-06 3 views
0

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

ответ

0

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

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

Вам нужно только один объект Монго, и это поточно.

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

db.close() from your code. 

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

Смежные вопросы