Spring에서 사용자의 호출부터 DB까지 이어지는 흐름은, Controller부터 시작하여 Controller -> Service -> Repository -> DB까지 이어지는 계층구조를 보임.
예를 들어, Student객체에는 id, name, email, age등의 요소가 정의되고 이 Student객체를 domain 또는 데이터베이스의 테이블과 대응되어 엔티티라 부름.
이 Student객체가 DB에 저장되기 위해서, 데이터베이스와 인터페이싱 하여 도메인 객체를 저장하고 관리하는 역할을 하는 것이 Repository의 역할.
서비스는 핵심 로직을 구현하는데 사용되며, 컨트롤러(Controller)와 리포지토리 사이에서 중간 역할을 하고, Student 객체 생성, 유효성 체크 등의 비지니스로직을 담당.

컨트롤러 : 사용자의 요청에 대한 url패턴, input/output의 형태 등을 정의
서비스 : 핵심 비즈니스 로직 구현
리포지토리 : DB에 접근, 도메인객체를 DB에 저장하고 관리
도메인 : 테이블명과 컬럼명 등 모델 객체 정의
SpringDataJpa

순수 JPA(네이티브 JPA)
Mybatis 인터페이스
JDBC 클래스