Использование AppFuse Generic/Universal DAO и Manager

Я уже давно использую AppFuse для создания своих проектов. И я уже знаю, что есть два подхода к разработке классов DAO и Manager:

  1. Подход GenericDao/GenericManager
  2. Подход UniversalDao/UniversalManager

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

Есть ли причина, по которой я должен предпочесть универсальный вариант? И вообще, было бы целесообразно смешивать оба класса в моем приложении?


person altcoder    schedule 24.06.2009    source источник


Ответы (1)


Я лично предпочитаю использовать UniversalDao/UniversalManager по нескольким причинам:

  • "Универсальный" подход обычно включает гораздо больше настроек: вы должны настроить DAO и Manager для каждой сущности. Для средне-крупной модели это просто неприемлемо;
  • с "Общим" подходом вам все равно придется выполнять много преобразований. Например, с Hibernate вы в конечном итоге будете делать много понижающих преобразований, например, из List‹ Object> в List‹ MyDomainClass>
  • с Universal вы можете создать более гибкий DAO, который управляет многими (а не только одним) классами моделей, например OrderDAO, который управляет заказами, товарами и категориями.

И, конечно же, никогда не смешивайте два подхода! Это легко сделать, но в любом проекте единообразие — большое достоинство ;)

person Dimitri De Franciscis    schedule 14.08.2009