Например, у меня есть приложение, в котором у нас есть DynaActionForm с несколькими атрибутами ... одним из которых является POJO, сгенерированный инструментами Hibernate. Этот POJO используется повсеместно ... JSP заполняет его данными, действие Struts отправляет его на уровень обслуживания, DAO сохраняет его ... ack!
Для меня нет ничего плохого в том, что доменные объекты являются «трансверальным» слоем в веб-приложении (в конце концов, вы хотите, чтобы их состояние переходило из базы данных в пользовательский интерфейс, и я не вижу необходимости отображать их в промежуточные структуры):
Теперь представьте, что кто-то решает провести небольшой рефакторинг этого POJO ... так что это означает, что все JSP, Action, Service, DAO должны быть обновлены ... что довольно болезненно ... быть лучше?!
Конечно, вы могли бы прочитать «Бины» из базы данных на уровне слоя DAO, отобразить их в «Объекты домена» на уровне обслуживания и отобразить Объекты домена в «Объекты значения» для уровня представления, и у вас будет очень низкая связь. Но тогда вы поймете, что:
- Добавление столбца в базу данных обычно означает добавление некоторой информации в представление и наоборот.
- Дублирование объектов и отображений чрезвычайно болезненно делать и поддерживать.
И вы забудете эту идею.
Есть книга под названием «Основные шаблоны J2EE: лучшие практики и стратегии проектирования» (2-е издание) ... стоит ли на это смотреть? Я не верю, что это затрагивает какие-то конкретные фреймворки, но похоже, что это может дать некоторое представление о том, как правильно наложить слой на приложение ...
Эта книга была «демонстрацией» того, как реализовать (сверхинженерные) приложения, использующие весь стек J2EE (с EJB 2.x), и почему-то всегда считалась слишком сложной (слишком много шаблонов). Кроме того, сегодня он явно устарел. Так что это интересно, но его нужно принимать с гигантским зерном соли.
Другими словами, я бы не рекомендовал эту книгу (по крайней мере, конечно, не так, как это было бы в современном состоянии) Вместо этого взгляните на шаблоны реального мира Java EE - переосмысление передового опыта (см. Главу 3 - Отображение базовых шаблонов J2EE в Java EE) и / или литературу Spring, если вы не используют Java EE.