Методы и аргументы объектов доступа к данным

#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.