2015-08-03 2 views
5

У меня есть класс «container» с полями, которые содержатся в нескольких таблицах базы данных, и я использую шаблон DAO для доступа к данным.Один класс DAO на «контейнер» или один DAO на таблицу?

Вопрос в том, должен ли я создать один DAO для этого класса «контейнер» или лучше иметь один DAO для таблицы и объединять их данные?

ответ

10

Вы должны проектировать свой DAO в соответствии с потребностями вашего приложения, а не с макетом вашей базы данных. Начните с одного DAO, и если он станет слишком большим, переставьте его в несколько DAO таким образом, который имеет смысл для вашего кода.

Весь смысл DAO составляет скрыть любые концепции баз данных (например, таблицы) из вашего приложения. Ваше приложение должно просто просматривать его как услугу с помощью некоторых полезных методов.

Например, если вашему приложению нужны некоторые пользовательские данные, которые поступают как из таблицы Users, так и из таблицы EmailAddresses, вашему коду приложения не нужно координировать два DAO - он должен вызывать один метод DAO getUserDetails(), и DAO будет скрыть тот факт, что нужно вызвать несколько таблиц.

Я рекомендую первый из вариантов в вашем вопросе, но я бы не стал ограничивать правило «один DAO для класса контейнера».

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