본문 바로가기
Back/Spring

Spring Web Layer(Dto?, Dao?)

by Inventer 2022. 3. 28.

Spring Web Layer

  • Web Layer
    • 흔히 사용하는 컨트롤러(@Controller)와 JSP/Freemarket 등의 뷰 템플릿 영역
    • 이외에도 필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역을 이야기함.
  • Service Layer
    • @Service에 사용되는 서비스 영역임
    • Service에서 비즈니스 로직을 처리하는 것이 아닌, Service는 트랜잭션, 도메인간 순서 보장의 역할을 수행함
    • 일반적으로 Controller와 Dao(Data Access Object)의 중간 영역에서 사용함
    • @Transactional이 사용되어야 하는 영역임
  • Repository Layer
    • Database와 같이 데이터 저장소에 접근하는 여역
    • 기존에 개발하셨던 분들이라면 DAO 영역으로 이해하시면 쉬움
  • Dtos
    • Dto(Data Transfer Object)는 계층 간 데이터 교환을 위한 객체를 이야기 하며 Dtos는 이들의 영역을 이야기함
    • 예를 들어 뷰 템플릿 엔진에서 사용될 객체나 Repository Layer에서 결과로 넘겨준 객체 등이 이들을 이야기함
  • Domain Model
    • 도메인이라 불리는 개발 대상을 모든 사람이 동일한 관점에서 이해할 수 있고 공유할 수 있도록 단순화 시킨 것을 도메인 모델이라 함
    • 이를테면 택시 앱이라고 한다면, 배차, 탑승, 요금 등이 모두 도메인이 될 수 있음
    • @Entity를 사용해보신 분들은 @Entity가 사용된 영역 역시 도메인 모델이라고 이해가능
    • 다만, 무조건 데이터베이스의 테이블과 관계가 있어야만 하는 것은 아님
    • VO(Value Object)처럼 값 객체들도 이 영역에 해당하기 때문

Web Controller, Service, Repository, Dto, Domain 이 5가지 레이어에서 비즈니스 처리를 할 곳은 Domain임.

기존에 서비스로 처리하던 방식을 트랜잭션 스크립트라고 함.

 

 

 


Ref.

http://www.yes24.com/Product/Goods/83849117, p101~102

'Back > Spring' 카테고리의 다른 글

테스트코드  (0) 2022.03.14
[Spring] Null Safety  (0) 2022.02.08
[Spring] SpEL(Spring Expression Language)  (0) 2022.02.08
[Spring] Resource  (0) 2022.02.08
[Spring] Validation, Data Binding  (0) 2022.02.08

댓글