Я читаю в некоторых статьях DAO не является обязательным для спящего режима, и его реализация зависит от "зависит", другими словами, мы можем выбирать между шаблоном ORM и DAO.
Хорошо, допустим, что я не хочу использовать шаблон DAO, поэтому im использует только сеанс CRUD и операцию запроса, предоставляемую спящим (мой ORM).
Специально для запросов "поиск" и "найти" неверно переписывать их всегда, поэтому разумно подумать о том, чтобы поместить их в класс.
Но тогда этот класс является простым DAO без всякой реализации DAO-шаблона и DAOFactory, только облегченная реализация DAO. Итак, дело в том, что нам всегда нужно DAO, и выбор - это тяжелая реализация DAO и облегченная реализация DAO?
Что я сказал не так?
ИЗМЕНИТЬ Еще одна проблема, с которой я столкнулся, - это где-то установить взаимодействия dao, например, я должен войти в систему пользователя и написать журнал логина (бесполезный пример, который я знаю...)
Итак, в шаблоне DAO у меня есть все общие реализации dao, DAOFactory и, наконец, UserHibernateDAO и LogHibernateDAO. Операция входа в систему - это бизнес-метод:
private void login(String username, String password){
daoFactory.beginTransaction();
UserDAO userDao=daoFactory.HIBERNATE.getUserDao();
LogDAO logDao=daoFactory.HIBERNATE.getLogDao();
if(userDao.checkAccount(username, password){
User user=userDao.findByAccount(username, password);
logDao.save(new Log("log-in", user);
}
daoFactory.commit();
}
Это разумно? Могу ли я использовать dao таким образом? Если я хочу обработать исключение, лучшее место для этого - это бизнес-логика?
EDIT2 Предположим, что для использования шаблона DAO основная причина заключается в том, чтобы иметь возможность переключаться между tecnhology (ORM- > JDBC и т.д.), Все нормально и нормально, НО где я могу обрабатывать сеанс и транзакцию спящего режима? Я не могу поместить его в DAO, это шаблон anty, и я не могу поместить его в сервисный уровень, потому что в hipohtetycal switch я должен удалить всю эту транзакцию (потому что другая технология не может их использовать).