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 операції.

Див. також[ред. | ред. код]

Посилання[ред. | ред. код]

Інструменти та фреймворки[ред. | ред. код]

Зноски[ред. | ред. код]

  1. Core J2EE Patterns - Data Access Objects. Sun Microsystems Inc. 2007-08-02. Архів оригіналу за 2012-04-09. Процитовано 2011-03-26.