#java #spring-boot #jakarta-ee #architecture #ejb
#java #весенняя загрузка #джакарта-ee #архитектура #ejb
Вопрос:
Вот архитектурная проблема при использовании Dao, сервиса и контроллера:
Предположим, что: на уровне DAO есть классы DAO, называемые: Dao1, Dao2, …
На уровне сервиса существуют классы сервисов, называемые: Service1, Service2, …
На уровне контроллера есть классы контроллеров, называемые Controller1, Controller2, …
Service1 необходимо ввести Dao1 и Service2
Контроллеру 1 необходимо ввести Dao2, Service1 и Controller2
Соответствует ли эта архитектура принципам JEE? Есть ли какие-либо проблемы?
Лучше сказать, что: Service может вводить только Dao, а Controlleur может вводить только Service?
Ответ №1:
Насколько я понимаю, JEE не упоминает / не рекомендует шаблоны проектирования. JEE определяет набор API-интерфейсов в разных областях, таких как транзакции, jdbc, jax-rs и так далее, и реализация этих API предоставляется разными поставщиками. Таким образом, стандарты JEE помогают разрабатывать корпоративные приложения, но они не диктуют никаких принципов проектирования. Итак, я предполагаю, что ваш вопрос заключается в том, соответствует ли эта архитектура хорошим шаблонам проектирования и есть ли какие-либо проблемы.
В идеале, согласно вашему второму вопросу, контроллер не должен вводить класс dao. Контроллер должен вызывать только службы, а службы должны вводить классы dao и вызывать их методы. Этот дизайн обеспечивает слабую связь между уровнями контроллера, сервиса и dao. Таким образом, если изменяется сигнатура метода класса dao, уровень контроллера остается нетронутым, и требуется изменить только уровень сервиса.
Вообще говоря, большинство проектов пытаются максимально ослабить связь и обеспечить высокую когезию.
Надеюсь, это поможет!