stringtranslate.com

Объект доступа к данным

В программном обеспечении объект доступа к данным ( DAO ) — это шаблон, который предоставляет абстрактный интерфейс для некоторого типа базы данных или другого механизма сохранения . Сопоставляя вызовы приложений с уровнем сохранения, DAO обеспечивает операции с данными, не раскрывая детали базы данных. Эта изоляция поддерживает принцип единой ответственности . Он отделяет доступ к данным, необходимый приложению, с точки зрения объектов и типов данных, специфичных для домена (открытый интерфейс DAO), от того, как эти потребности могут быть удовлетворены с помощью конкретной СУБД (реализация DAO).

Хотя этот шаблон проектирования применим к большинству языков программирования, большинству программного обеспечения, требующего сохранения данных, и большинству баз данных, он традиционно ассоциируется с приложениями Java EE и реляционными базами данных (доступ к которым осуществляется через JDBC API из-за его происхождения из рекомендаций Sun Microsystems [1] «Основные шаблоны J2EE»).

Этот объект можно найти на уровне доступа к данным трехуровневой архитектуры .

Существуют различные способы реализации этого объекта:

Преимущества

Использование объектов доступа к данным (DAO) дает явное преимущество: оно разделяет две части приложения, которым не нужно знать друг о друге. Такое разделение позволяет им развиваться независимо. Если бизнес-логика изменится, она может положиться на согласованный интерфейс DAO. Между тем, изменения в логике сохранения не повлияют на клиентов DAO. [2] [3]

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

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

Такие технологии, как Java Persistence API и Enterprise JavaBeans, встроены в серверы приложений и могут использоваться в приложениях, использующих сервер приложений Java EE. Коммерческие продукты, такие как TopLink, доступны на основе объектно-реляционного отображения (ORM). Популярное программное обеспечение ORM с открытым исходным кодом включает Doctrine , Hibernate , iBATIS и реализации JPA, такие как Apache OpenJPA . [4]

Недостатки

Потенциальные недостатки использования DAO включают дырявую абстракцию , [ требуется цитата ] дублирование кода и инверсию абстракции . В частности, абстракция DAO как обычного объекта Java может скрыть высокую стоимость каждого доступа к базе данных. Разработчики могут непреднамеренно сделать несколько запросов к базе данных для получения информации, которая может быть возвращена за одну операцию. Если приложению требуется несколько DAO, для каждого DAO может потребоваться написать один и тот же код создания, чтения, обновления и удаления. [5]

Обратите внимание, что эти недостатки проявляются только в том случае, если для каждой таблицы имеется отдельный DAO и запрос SELECT не может получить доступ ни к чему, кроме целевой таблицы.

Инструменты и фреймворки

Смотрите также

Ссылки

  1. ^ "Основные шаблоны J2EE - Объекты доступа к данным". Sun Microsystems Inc. 2007-08-02.
  2. ^ "Data Access Object (DAO) Design Pattern". DigitalOcean . 2022-08-03 . Получено 2024-07-08 .
  3. ^ "Data Access Object (DAO) Design Pattern". GeeksforGeeks . 2017-08-26 . Получено 2024-07-08 .
  4. ^ "Data Access Object (DAO) Design Pattern". GeeksforGeeks . 2017-08-26 . Получено 2024-01-29 .
  5. ^ Смотрите http://www.ibm.com/developerworks/java/library/j-genericdao/index.html для обходных путей.
  6. ^ Ходжсон, Кайл; Рид, Даррен (2015-01-23). ​​ServiceStack 4 Cookbook. Packt Publishing Ltd. стр. Глава 4. ISBN 9781783986576. Получено 22 июня 2016 г.