Я реализую модуль согласно многоуровневой архитектуре.Он будет иметь уровень представления, уровень обслуживания, бизнес-уровень и уровень DAO.Согласно многоуровневой архитектуре, коммуникационный поток должен быть сверху вниз.Точно так же зависимость должна быть сверху вниз, то есть уровень представления - использует -> уровень обслуживания - использует -> бизнес уровень - использует -> уровень DAO.т. е. бизнес-уровень не должен зависеть от уровня обслуживания, а также.
Вопрос 1:
Какими должны быть входные данные для каждого уровня?Поскольку сервисный уровень вызывается из уровня представления, должен ли сервисный уровень принимать бин UI в качестве входных данных?или Service Bean в качестве входных данных?То же самое для бизнес-уровней и уровней DAO.
Вопрос 2:
Должен ли уровень DAO быть для каждой таблицы или он может обрабатывать несколько таблиц (все принадлежат одному модулю)?Данные моего модуля хранятся в нескольких таблицах.Поскольку все эти таблицы принадлежат одному модулю, я думаю, что имеет смысл иметь один уровень DAO, который абстрагирует хранение данных из верхних уровней в несколько таблиц.Кроме того, если необходимо подключить различные реализации уровня DAO (хранилище базы данных, хранилище SVN и т. Д.), Имеет смысл подключить одну реализацию (которая обрабатывает все данные).Кроме того, DAO для нескольких таблиц будет эффективен с точки зрения извлечения данных (достаточно одного запроса на соединение)
Вопрос 3:
Если рассматривается проект DAO для нескольких таблиц, то входные данные дляУровень DAO будет бизнес-бином.На уровне DAO лежит ответственность за преобразование бизнес-компонента в несколько компонентов DB, каждый из которых представляет таблицу и обрабатывает постоянство.Но это не будет соответствовать многоуровневой архитектуре, где говорится, что уровни должны быть изолированы, и любой уровень не должен зависеть от его верхнего уровня.В этом случае входные данные для уровня DAO - это бизнес-компонент (не компонент DB), а преобразование из бизнес-компонента в компоненты DB и наоборот является обязанностью уровня DAO, что означает, что он знает, как преобразовать бизнес-компонент в компонент DB.и наоборот.
Может кто-нибудь прояснить вышесказанное?Каким должен быть правильный способ реализации такого модуля?Является ли текущая реализация в соответствии с руководящими принципами?Правильное объяснение очень поможет.Спасибо!
Текущая реализация, которая у меня есть,
Уровень представления: преобразует компонент UI в компонент службы и передает его на уровень службы.
Сервисный уровень: преобразует сервисный компонент в бизнес-компонент и передает его на бизнес-уровень.Также организует звонки между различными зависимыми службами.Обрабатывает границу транзакции.Возвращает компонент EJB на уровень представления.
Бизнес-уровень: передает компонент EJB на уровень DAO.Возвращает служебный компонент на уровень обслуживания
Уровень DAO: преобразует бизнес-компонент в компоненты DB и наоборот.Возвращает бизнес-бин на бизнес-уровень.