Шаблон DAO (Data Access Object)

Шаблон DAO – это объект, который предоставляет абстрактный интерфейс к какому-либо типу баз данных или механизму хранения (например хранение в файле). Определённые возможности предоставляются независимо от того, какой механизм хранения используется и без необходимости специальным образом соответствовать этому механизму хранения.

Другими словами. Старайтесь писать ваше приложение таким образом, чтобы большая часть его ничего вообще “не знала” о том, какой механизм хранения данных Вы используете. Будь то база данных, файловая система или еще какой-нибудь способ хранения данных. Для этого разработчики Java рекомендуют шаблон DAO.

Используя этот шаблон Ваше приложение получается не завязано на механизм хранения данных. Это дает Вам гибкость в смене этих механизмов хранения. Например, если Вы решили перейти с одной базы данных на другую, то Вам достаточно будет просто реализовать абстрактный интерфейс (предоставляемый DAO) другим способом, а все оставшееся приложение будет без изменений.

Вот пример такого абстрактного интерфейса, о котором мы говорили ранее. Если его реализовать используя JDBC или например API, которое позволяет работать с файлами в Java, то оставшееся приложение будет знать только про этот интерфейс и ничего про его реализации и когда мы например каким-нибудь способом подменим реализацию, то оставшееся приложение будет работать как раньше.

Вот, например, НЕПОЛНАЯ реализация этого интерфейса через JDBC для базы H2 (скорее всего будет работать и для некоторых других баз данных).

Вот пример использования этого интерфейса. Заметьте, что в коде нет ни слова о том, что где-то используется JDBC, SQL или название базы данных (статический блок не в счет. от этого мы научимся избавляться).

Для лучшего запоминания поглядите на небольшую диаграмму классов простейшей реализации этого шаблона.

4

Добавить комментарий

Ваш e-mail не будет опубликован.

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">