스프링 프로젝트를 할 때 다음과 같이 계층을 나눌 수 있다.
스프링 계층은 크게 3개로 나눌 수 있다
브라우저상의 웹 클라이언트의 요청 및 응답을 처리한다.
Service Layer, Data Access Layer에서 발생하는 Exception 처리
@Controller
클래스가 이 계층에 속한다.
컨트롤러는 사용자의 요청을 처리한 후 지정된 뷰에 모델 객체를 넘겨주는 역할을 한다.
사용자의 요청이 진입하는 지점이며 요청에 따라 어떤 처리를 할 지 결정을 해 Service에 넘겨준다.
애플리케이션 비즈니스 로직 처리와 비즈니스와 관련된 도메인 모델의 적합성 검증을 한다.
트랜잭션 관리를 한다.
프레젠테이션 계층과 데이터 액세스 계층 사이를 연결하는 역할로서 두 계층이 직접적으로 통신하지 않게 한다.
@Service
어노테이션을 사용하여 작성된 Service 구현 클래스가 이 계층에 속한다.
Service는 비즈니스 로직을 수행한다.
알맞은 정보를 가공하고 DB에 접근하여 결과값을 받아오는 등의 행위를 통해 비즈니스 문제를 해결한다.
서비스는 다른 서비스를 의존하기도 한다.
ORM(Mybatis, Hibernate)등을 사용하는 계층
DAO 인터페이스와 @Repository
어노테이션을 사용하여 작성된 DAO 구현 클래스가 이 계층에 속한다.
Entity에 의해 생성된 DB에 접근하는 메서드를 사용하기 위한 인터페이스다.
@Entity
어노테이션으로 DB 구조를 만들었다면 JpaRepository를 통해 CRUD를 할 수 있다.
public interface MemoRepository extends JpaRepository<Product, Long> {
}