Я занимаюсь разработкой приложения MongoDB на Java, но думаю, что этот вопрос связан с соединениями хранилища данных для веб-приложений в целом.
Мне нравится структурировать все веб-приложения с четырьмя пакетами верхнего уровня, которые называются (что, я думаю, самоочевидно):
- Контроллер
- Модель
- ДАО
- Util
В идеале я хотел бы иметь класс в пакете Dao, который обрабатывает все детали соединений.
Пока что я создал класс, который выглядит следующим образом:
public class Dao {
public static Mongo mongo;
public static DB database;
public static DB getDB() throws UnknownHostException, MongoException{
mongo = new Mongo("localhost");
database = mongo.getDB("mydb");
return database;
}
public static void closeMongo(){
mongo.close();
}
}
Я использую его в своем коде с чем-то вроде этого
public static void someMethod(String someData){
try {
DB db = Dao.getDB();
DBCollection rColl = db.getCollection("mycollection");
// perform some database operations
Dao.closeMongo();
} catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace();
}
}
Кажется, это работает нормально, но мне было бы любопытно узнать, что люди считают "лучшим" способом решения этой проблемы, если такая вещь существует.