Data access object
Об'єкт доступу до даних (англ. data access object) (DAO) - об'єкт що надає абстрактний інтерфейс до деяких видів баз даних чи механізмів персистентності реалізуючи певні операції без розкриття деталей бази даних. Він надає відображення від програмних викликів до рівня персистентності. Така ізоляція розділює запити до даних в термінах предметної області та їх реалізацію засобами СКБД.
Цей паттерн проєктування застосовний у більшості мов програмування, видів програмного забезпечення з потребою персистентності та більшості типів баз даних, але він традиційно асоціюється з застосунками Java EE та реляційними БД доступ до яких здійснюють через JDBC API що пов'язано з походженням паттерна із збірки найкращих практик Sun Microsystems.[1] ("Core J2EE Patterns") для цієї платформи.
Переваги
Перевагою використання об'єкту доступу до даних є досить просте розділення двох частин програми, які мають бути розділені: бізнес логіки, та логіки персистентності. В такому разі зміна бізнес логіки зовсім не буде впливати на роботу механізмів персистентності, а заміна схеми даних чи способу їх зберігання - не впливати на роботу бізнес логіки, якщо інтерфейс реалізований правильно.
Опис мовою Java
Нехай дано клас-сутність User
public class User{ private String userName; private String firstName; private String lastName; private String email; private int age; }
Тепер напишемо інтерфейс DAO.
public interface UserDAO { User get(String userName); void create(User user); void update(User user); void delete(String userName); }
DAO не повинний прив'язуватись до моделі і визначає лише основні CRUD операції.
Див. також
- Create, read, update та delete (CRUD)
- Data Access Layer
- Data Transfer Object
- Design Patterns (книга)
- Об'єктно-реляційне відображення
- Service Data Objects
Посилання
- Core J2EE Patterns - Data Access Object [Архівовано 9 квітня 2012 у WebCite]
- Inner Class strategy [Архівовано 23 серпня 2011 у Wayback Machine.]
- Data Access Objects versus Object Relational Mapping
Інструменти та фреймворки
- ODB система ORM для C++
- Persist [Архівовано 19 травня 2011 у Wayback Machine.] ORM інструмент
- DB Solo [Архівовано 28 березня 2022 у Wayback Machine.] генератор коду EJB 3.0 DAO
- MDAOG [Архівовано 13 квітня 2022 у Wayback Machine.] генератор коду DAO для PostgreSQL
- CodeFutures (Firestorm/DAO) Генератор для JDBC DAO, Spring DAO, Hibernate DAO
- JingDAO [Архівовано 24 липня 2011 у Wayback Machine.] DAO фреймворк
- PerfectJPattern Open Source Project [Архівовано 6 травня 2011 у Wayback Machine.], компонентна реалізація шаблону DAO в Java (JPA, Hibernate та Spring)
- nHydrate [Архівовано 12 березня 2011 у Wayback Machine.] DAO/DTO фреймворк, генератор коду для .NET
- AuDAO [Архівовано 16 липня 2011 у Wayback Machine.] Генератор для JDBC DAO (MySQL, Oracle) та Google App Engine datastore
- IBM pureQuery [Архівовано 24 квітня 2011 у Wayback Machine.]
- ComtorDAO Data Access Object Library for java [Архівовано 13 грудня 2010 у Wayback Machine.]
- ORMLite Lightweight Object Relational Mapping (ORM) фреймворк на Java для JDBC та Android
- EasyDriver [Архівовано 7 березня 2011 у Wayback Machine.] Java-бібліотека для створення запитів що можуть використовуватись у контексті DAO.
Зноски
- ↑ Core J2EE Patterns - Data Access Objects. Sun Microsystems Inc. 2 серпня 2007. Архів оригіналу за 9 квітня 2012. Процитовано 26 березня 2011.
|