Сценарий:
- Стек: Java, Spring, Hibernate.
- Модель: клиент-серверное приложение.
- Шаблон: Модель-Вид-Контроллер (MVC).
Классы Service Layer имеют три поведения:
Некоторые сервисы имеют бизнес-правило внутри методов и делегируют постоянство приложению. Подобно:
EntityManager.save (юридическое лицо);
Некоторые сервисы просто вызывают функцию базы данных (передавая параметры)
CallableStatement cls = con.prepareCall ("{call databaseFunction (args)}");
Некоторые сервисы имеют методы с обоим поведением.
Мои вопросы:
- Есть ли проблема в том, чтобы прикладные службы вызывали функции базы данных напрямую? Разве это не считается плохой практикой? Какая модель архитектуры будет применима к такому проекту?
- Есть ли какая-либо проблема в том, что поведение поведения в одной и той же службе? Такие как транзакции и последовательность?
- В случае обслуживания, делает ли эта инкапсуляция неясным для разработчика, что он также должен изменить функции в базе данных? Как этого избежать?
- Этот сценарий встречается в других приложениях по всему миру или это просто архитектурная ошибка?