Jump to content

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

(Перенаправлено с объекта доступа к данным )

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

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

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

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

  • Один DAO для каждой таблицы.
  • Один DAO для всех таблиц для конкретной СУБД.
  • Если запрос SELECT ограничен только целевой таблицей и не может включать JOINS, UNIONS, подзапросы и общие табличные выражения (CTE).
  • Где запрос SELECT может содержать все, что позволяет СУБД.


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

[ редактировать ]

Использование объектов доступа к данным (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., 2 августа 2007 г.
  2. ^ «Шаблон проектирования объекта доступа к данным (DAO)» . Цифровой Океан . 03.08.2022 . Проверено 8 июля 2024 г.
  3. ^ «Шаблон проектирования объекта доступа к данным (DAO)» . Гики для Гиков . 26 августа 2017 г. Проверено 8 июля 2024 г.
  4. ^ «Шаблон проектирования объекта доступа к данным (DAO)» . Гики для Гиков . 26 августа 2017 г. Проверено 29 января 2024 г.
  5. ^ См . http://www.ibm.com/developerworks/java/library/j-genericdao/index.html для обходных путей.
  6. ^ Ходжсон, Кайл; Рид, Даррен (23 января 2015 г.). Рецепты ServiceStack 4 . Packt Publishing Ltd. с. Глава 4. ISBN  9781783986576 . Проверено 22 июня 2016 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f2fb259ed5b66e09567b169805dcaaf6__1720418880
URL1:https://arc.ask3.ru/arc/aa/f2/f6/f2fb259ed5b66e09567b169805dcaaf6.html
Заголовок, (Title) документа по адресу, URL1:
Data access object - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)