반응형
Web Layer
- 웹 어플리케이션의 최상위에 있다. Controller, JSP/Freemaker 등의 뷰 템플릿 영역이다. 사용자의 요청(input)을 받고 요청에 따른 정확한 응답(output)을 전달한다.
- 외부 요청을 처리하고, 올바른 응답을 사용자에게 반환하는 것에 대한 전반적인 영역을 말한다.
- Web Layer는 웹 어플리케이션의 최전방에 있기 때문에 다른 레이어에서 발생한 예외 처리, 인증 관리 및 권한 없는 사용자 인가 거부 등을 통해 해당 웹 어플리케이션에 대한 보안 위협을 방지할 수 있다.
Service Layer
- @Service, @Transactional에 사용되는 서비스 영역.
- 트랜잭션과 도메인 간의 순서만 보장하는 역할 수행.
- 트랜잭션에 대한 경계(구분선) 역할을 하고 어플리케이션과 인프라 서비스를 포함한다. 인프라 서비스의 경우 파일 시스템, 데이터베이스, 이메일 서비스와 같은 외부 리소스와 통신하는 plumbing code를 포함한다.
Repository Layer
- Database와 같이 데이터 저장소에 접근하는 영역.
- 일반적으로 Dao(Data Access Object) 영역이다.
DTOs
- DTO(Data Transfer Object)는 계층 간에 데이터 교환을 위한 객체를 말하는데, DTOs는 이들의 영역을 이야기한다.
Domain Model
- 도메인은 소프트웨어를 개발하는 대상 영역. 배달앱을 만든다면 식당에 주문 콜을 하고, 주문을 받고, 요금을 지불하는 등의 전 과정이 도메인이 된다.
- 도메인이라 불리는 개발 대상을 모든 사람이 동일한 관점에서 이해할 수 있고 공유할 수 있도록 단순화시킨 것을 도메인 모델이라고 한다.
- @Entity가 사용된 영역 역시 도메인 모델이라고 할 수 있지만, 무조건 DB와 관계가 있어야 하는 것은 아니다.
- VO처럼 값 객체들도 이 영역에 해당된다.
총 다섯 가지 레이어에서 비즈니스 로직(핵심 기능)을 담당해야 할 곳은 Domain이다.
참고
반응형
'Programming > Spring' 카테고리의 다른 글
[Spring Boot] @RequiredArgsConstructor 사용 시 final 키워드 사용하지 않아서 에러가 발생한 것 같은데.. (0) | 2021.08.24 |
---|---|
[Spring] @PathVariable, @RequestParam, @RequestBody, @ResponseBody (0) | 2021.08.20 |
[Spring Boot] IntelliJ에서 lombok 사용하고 테스트 해보기 (0) | 2021.08.18 |
[Spring Boot] JUnit5로 Controller 테스트 코드 작성하기 (0) | 2021.08.17 |
[Spring] Path with "WEB-INF" or "META-INF" (0) | 2021.08.09 |