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
Посилання
Інструменти та фреймворки
- ODB система ORM для C++
- Persist ORM інструмент
- DB Solo генератор коду EJB 3.0 DAO
- MDAOG генератор коду DAO для PostgreSQL
- CodeFutures (Firestorm/DAO) Генератор для JDBC DAO, Spring DAO, Hibernate DAO
- JingDAO DAO фреймворк
- PerfectJPattern Open Source Project, компонентна реалізація шаблону DAO в Java (JPA, Hibernate та Spring)
- nHydrate DAO/DTO фреймворк, генератор коду для .NET
- AuDAO Генератор для JDBC DAO (MySQL, Oracle) та Google App Engine datastore
- IBM pureQuery
- ComtorDAO Data Access Object Library for java
- ORMLite Lightweight Object Relational Mapping (ORM) фреймворк на Java для JDBC та Android
- EasyDriver Java-бібліотека для створення запитів що можуть використовуватись у контексті DAO.
Зноски
- Core J2EE Patterns - Data Access Objects. Sun Microsystems Inc. 2 серпня 2007. Архів оригіналу за 9 квітня 2012. Процитовано 26 березня 2011.