DAO против шаблона ORM (спящий режим) [закрыто]

Я читал в некоторых статьях, что DAO не является обязательным в спящем режиме, и его реализация "зависит от обстоятельств", другими словами, мы можем выбирать между ORM и шаблоном DAO .

Хорошо, давайте предположим, что я не хочу использовать шаблон DAO, поэтому я использую только сеанс CRUD и операцию запроса, предоставляемую спящим режимом (мой ORM).

Специально для запросов «поиск» и «поиск» неправильно переписывать их всегда, поэтому разумно подумать о том, чтобы поместить их в класс.

Но тогда этот класс является простым DAO без какой-либо реализации шаблона DAO и DAOFactory, Итак, суть в том, что нам всегда нужен DAO, и выбор - тяжелая реализация DAO против облегченной реализации DAO?

Что я сказал не так?

EDIT Еще одна проблема, с которой я столкнулся, - это то, где разместить взаимодействия 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();
}

Разумно ли это? Могу ли я использовать дао таким образом? Если я хочу обработать исключение, лучше всего это сделать в бизнес-логике?

EDIT2 Предположим, что используется шаблон DAO, основная причина для этого - возможность переключаться между технологиями (ORM-> JDBC и т. Д.), Все в порядке, НО где я могу обрабатывать сеанс гибернации и транзакцию? Я не могу поместить его в DAO, это анти-шаблон, и я не могу поместить его на уровень обслуживания, потому что в гипогтетическом переключателе я должен удалить все эти транзакции (потому что другие технологии могут не использовать их).

45
задан blow 28 October 2010 в 09:04
поделиться