Хорошо ли иметь несколько DAO? - PullRequest
0 голосов
/ 25 мая 2018

Допустим, у меня есть одна база данных с двумя таблицами: companies и employees.Должен ли я создавать companyDAO и employeeDAO Если я выберу, обновлю, добавлю и удалю из этих двух таблиц?

Или я должен создать один DAO, в котором я напишу методы для операций CRUD для каждой таблицы вбаза данных?

Ответы [ 4 ]

0 голосов
/ 25 мая 2018

Как следует из названия, DAO, что означает «Объект доступа к данным», является объектом для доступа к ОДНОМУ объекту или классу.Стандартные методы разработки программного обеспечения и корпоративной индустрии (особенно в Java) предусматривают использование одного DAO для каждого бизнес-объекта.

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

Также читайте https://en.wikipedia.org/wiki/Data_access_object

0 голосов
/ 25 мая 2018

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

Когда вы хотите сделать это (иметь один объект сопоставления DAO для нескольких таблиц), когда вы хотите отделить модель гибернации от бизнес-модели.

0 голосов
/ 25 мая 2018

Да, имеет смысл иметь отдельные DAO для большинства объектов.

Часто вы будете работать с обобщенными DAO s, т.е. у вас есть абстрактный суперкласс.В упрощенном примере это может выглядеть так:

class BaseDAO<T extends Entity>

, которые предоставляют набор полезных методов для поиска, удаления или обновления объектов.При определении подкласса этого BaseDAO для каждой сущности, например,

class EmployeeDAO extends BaseDAO<Employee> 

, вы должны убедиться, что все ваши DAO возвращают правильный тип для методов, которые вы * должны реализовать в вашем BaseDAO.,Таким образом, метод findAll() в вашем EmployeeDAO вернет List<Employee>.

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

0 голосов
/ 25 мая 2018

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

...