서비스(service)란 컨트롤러와 리파지토리 사이에 위치한 계층이다.
- 서버의 핵심 비즈니스 로직을 처리하는 순서를 총괄한다.
서버에는 크게 REST controller, service, repository로 구분하여 소통한다.
이 워크 플로의 단계를 가게에서 주문 로직으로 변경해보면.
Rest Controller는 일종의 웨이터로 클라이언트의 주문을 접수 받는다.
service는 웨이터의 주문에 따라 비즈니스 로직을 실행하는 요리사이다.
repository는 웨이터가 주문에 따라 필요한 재료를 손질하거나 다듬어 놓는 보조 요리사이다.
재료는 창고(DB)에서 보조 요리사가 가져오기 때문에 창고 출입은 리포지토리가 담당한다.
트랜잭션(transaction)은 모두 성공해야하는 일련의 과정을 뜻한다. 핵심 키워드는 다음과 같다.
- 모두 성공해야 한다. -> 만약 중간에서 실패가 일어나면 반드시 모든 과정이 없었던걸로 하는 Rollback을 실시한다.
- 일련의 과정과 순서가 있다.