2013-07-23 5 views
2

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

Должен ли я иметь один общий класс DAO для получения/установки объекта отдела и получения/установки сотрудника или двух отдельных классов DAO DepartmentDAO и EmployeeDAO для получения/установки объекта отдела и объекта сотрудника соответственно?

ответ

0

Я бы разделил его на dao для отдела и еще один для Employee. Я думаю, что красный флаг: что бы вы назвали объединенным дао?

Если явное и интуитивно понятное имя не возникает в вашем уме сразу, это потенциальный запах кода. И если имя не выпрыгивает на вас, это наверняка смущает других программистов, которые смотрят на ваш код. Зачем складывать две вещи вместе, которые совершенно разные?

Некоторые рекомендации:

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

  2. Если ваш проект начинает получать огромные суммы с 15 или 20 DAO, вы можете в конечном итоге решить, пойти в один DAO, но это решение вы можете сделать вниз по течению. Тогда, возможно, вы могли бы сделать DAO HumanResources или что-то в этом роде. Это в основном только для предотвращения переполнения проводки.

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

Это мой прием.

+1

Если у двух классов нет отношений, было бы очевидно использовать два отдельных DAO. Я использую Hibernate для java-класса для сопоставления таблицы базы данных и имеет отношения «один-ко-многим», поэтому мне было интересно, есть ли какие-либо преимущества для объединения двух DAO вместе. –

0

На самом деле, он смотрит на меня, как вам нужно, по крайней мере 3 различных объектов DAO:

  • DepartmentDAO
  • EmployeeDAO
  • EmployeeCollectionDAO

Вещь - отображение одного объекта и отображение группы объектов имеет существенные отличия. Следовательно, они должны обрабатываться различными структурами, иначе вы рискуете нарушить SRP.

Кроме того, Department должно быть взаимодействием с коллекцией экземпляров Employee, а не с каждым экземпляром отдельно.

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