#design-patterns #data-access-layer
#шаблоны проектирования #уровень доступа к данным
Вопрос:
Какие методы и аргументы существуют для объекта доступа к данным? Будет ли типичный DAO выглядеть так
DAO<T>
select(): List<T>
selectOne(id: int): T
insert(obj: T): boolean
update(obj: T): boolean
delete(obj: T): boolean
Если это так, то почему бы просто не наследовать мои объекты Entities / Domain от этого класса? Тогда мне не придется передавать объекты в этот класс. Также в настоящее время кажется, что этот класс будет содержать много похожего кода? Я полагаю, что мое понимание DAO неверно? Я больше знаком с ORM
Ответ №1:
Действительно, типичные DAO очень похожи на то, что вы описываете, и существуют библиотеки, которые помогут вам избежать создания похожих методов, отличающихся только типом (если вы реализуете DAO с помощью ORM, ищите общие DAO).
Например, такие фреймворки, как Spring-Data-JPA, позволяют сосредоточиться на необычных методах запроса объектов по другим критериям.
findByName(строка: имя): Список
findByDay(дата: d1, Дата d1): Список
Перемещение этих методов в объекты entity — это шаблон, который предпочитают некоторые люди, но именно в том, чтобы иметь возможность определять общий DAO и наследовать от него, было бы причиной оставить эти методы в разных классах.
Итак, я не ошибаюсь в своем понимании DAOs.