대본:
- 스택 : Java, Spring, Hibernate.
- 모델 : 클라이언트 서버 응용 프로그램
- 패턴 : MVC (Model-View-Controller).
서비스 계층 클래스에는 세 가지 동작이 있습니다.
일부 서비스는 메소드 내에 비즈니스 규칙이 있으며 지속성을 애플리케이션에 위임합니다. 처럼:
EntityManager.save (entity);
일부 서비스는 단순히 데이터베이스 함수를 호출합니다 (매개 변수 전달).
CallableStatement cls = con.prepareCall ( "{call databaseFunction (args)}");
일부 서비스에는 두 가지 동작 이 모두 있는 방법이 있습니다.
내 질문 :
- 응용 프로그램 서비스에서 직접 데이터베이스 기능을 호출하는 데 문제가 있습니까? 이것이 나쁜 습관으로 간주되지 않습니까? 이와 같은 프로젝트에 적용 가능한 아키텍처 모델은 무엇입니까?
- 동일한 서비스에서 동작을 혼합하는 데 문제가 있습니까? 거래 및 일관성과 같은?
- 유지 관리의 경우이 캡슐화가 개발자에게 데이터베이스의 기능도 변경해야한다는 것을 모호하게합니까? 이것을 피하는 방법?
- 이 시나리오는 전 세계의 다른 응용 프로그램에서 발생합니까 아니면 건축 오류일까요?