소프트웨어 시스템을 세 개의 논리적 계층으로 분리

분리 설계의 목적은 다음과 같다. 꼭 3-Layer Architecture만의 이야기는 아니고, 디자인패턴의 일반적인 목적과 일맥상통하는 면이 있다.
3-Tier Architecture라고도 부른다.
각 계층의 명칭도 아래처럼 여러 가지로 불리지만, 근본적으로는 같은 의미이다.
@RestController(혹은 @Controller) 사용@Service 사용@Repository 사용, 그러나 부모인 JpaRepository가 이미 해당 기능을 갖고 있어 붙이지 않아도 됨public interface UserRepository extends JpaRepository<User, Long> {
// ...
}데이터 전달을 위한 '순수 데이터' 객체
요청 데이터
{
"title": "범죄도시11"
}
DTO
@Getter
public class CreateMovieRequest {
private String title;
}
컨트롤러
@RestController
public class MovieController {
@PostMapping("/movies")
public void createMovie(@RequestBody CreateMovieRequest request) {
// ...
}
}