lec-14-DAO-v001
.pdfКЛАСС AUTHORSERVICE
(ОКОНЧАНИЕ)
public synchronized String getAuthorsClean() {
if( authorList != null && authorList.size() > 0 ) { authorList.clear();
}
return( null );
}
//--------------------------------------------
public String getDaoDescr() { return daoDescr; }
//--------------------------------------------
public void setDaoDescr( String p_daoDescr ) { daoDescr = p_daoDescr; }
//--------------------------------------------
public void makeDAO() throws Exception { if (dao == null) {
if( daoDescr == null || daoDescr.equals("") || daoDescr.length() < 2 ) {
throw new Exception("DAO daoDescr must be set !" );
}
dao = BookStoreDAOFactory.getDAO( daoDescr );
}
}
}
ЗАКЛЮЧЕНИЕ
Задача класса BookStoreDAOFactory, вызываемого в методе makeDAO(), проста – создавать объект DAO и через свои методы вызывать методы вышеуказанного объекта, то есть выполнять делегирование вызовов методов.
Откровенно говоря, такой подход не слишком хорош, так как все классы, включая реализацию DAO, зависят от объектов модели, да еще как зависят! Пока мы будем пользоваться этим решением, незначительно его улучшая. В дальнейшем попытаемся придумать что-либо более подходящее. Мы воспользовались данной стратегией лишь потому, что ее иногда применяют на практике, так как каждое частное обращение к базе данных легко добавить. При этом такой подход достаточно эффективен, так как решения специализированные. Однако при большом количестве объектов и большом разнообразии обращений в базу данных, такой подход сделает приложение почти неуправляемым.
ИТОГИ
В теме рассмотрены:
•Паттерны Data Access Object (или DAO) и
Session Facade
•Пример реализации DAO
•Классы сущности, представляющие модель
•Особенности реализации
•Интерфейс BookStoreDAO
•Класс DerbyDAO
•Класс AuthorService