@Service
✔ Controller: client의 요청과 응답을 처리한다. 실제 처리는 Service에게 위임한다.
- client의 요청을 받고, 그 요청에 대한 처리를 Service에게 위임한다.
그 후, 처리된 결과를 받아서 client에게 응답한다.
✔ Repository, Mapper: DB Access를 처리한다. (Data Access Layer)
✔ Service: Controller와 Repository 중간에 위치하여, 핵심 비즈니스 로직을 구현 및 처리한다.
- DB Access가 필요한 부분은 Repository에게 위임한다.
🔸 Service는 독립적인 계층으로 View와 DB 종류에 영향을 받지 않도록 설계해야 한다.
- View의 종류가 바뀌면 Controller는 영향을 받을 수 있다.
- DB의 종류가 바뀌면 Repository는 영향을 받을 수 있다.
- 하지만, 그 중간에 위치하고 있는 Service 계층은 다른 외부 기술에 영향을 받지 않도록 설계해야 한다.
그렇게 함으로써 재사용 가능하게 만들어야 한다.
🔸 Service 계층의 메서드가 데이터 트랜잭션에서 하나의 단위가 된다.
🔸 Service 클래스 만들 때에는 애플리케이션의 세부 영역 별로 생성하여 구현한다.
- 하나의 클래스에 모든 로직들을 집어넣지 않는다!
ex) 사용자에 관련된 서비스 클래스, 게시물 관련 서비스 클래스 등등,,
🔸 @Controller, @Service, @Repository 모두 세부 영역 별로 만든다.