DAO

Паттерн Data Access Object (DAO) относится к интеграционным шаблонам проектирования - организует интеграцию источников данных с механизмом их обработки. По другой классификации к структурным шаблонам - разделяет работу с данными на части DAO - суть в том, что обработка данных отделена от получения этих данных.

Преймущества:

Проще расширяемость

Большая гибкость при разработке (можно добавлять новые источники данных, не изменяя логику обработки и наоборот).

...

Если источники данных будет много и это изменяемый набор, то заводят один абстрактный класс или интерфейс DataFactory, от него наследуются классы, реализующие или наследующие DataFactory (Например RdbDAOFacory, XMLDAOFactory) и уже эти фабрики создают объекты, позволяющие бизнес-сервисам работать с ними.

Пример реализации для книжного магазина:

BookStoreDAO - интерфейс взаимодействия бизнес-сервисов с источниками данных

BookStorDAOFactory будет порождать объекты

DerbyDAO - реализация для дерби

OracleDAO - реализация для Oracle

Настройки хранятся в xml-файле, который должен считать ServletContextListener