Spring 구조의 구성요소
Controller(web) : 서비스 호출, 연결
Mapper.java(Repository, DAO) : DB에 정보요청/접근
Model(Domain, VO, DTO) : 객체, getter setter
Service : Dao가 들고온 VO가공
Mapper.xml : SQL문 / 쿼리
기본적으로 위의 5가지 Class를 생성하여 사용합니다!!
각각 괄호 속의 용어는 정확한 차이점은 모르겠지만 비슷한 용도로 사용합니다.
아래는 개념적 차이를 간단히 정리했는데 보통 정확히 명칭을 구별하지 않고 사용하는 경우가 많습니다.
*Mapper / DAO
Mapper
Mybatis 매핑xml에 기재된 SQL을 호출하기 위한 인터페이스
DAO (Data Access Object)
DB에 접근하여 데이터를 조회하거나 조작하는 기능을 전담하는 객체
*VO / DTO
VO (Value Object)
- 데이터 그 자체로 의미있는 것을 담고있는 객체
- 값 변경이 없는 read-only 속성 객체 ( 불변성, immutable)
- 모든 레이어에서 사용가능
- 특정한 비즈니스 로직 가질 수 있음
- 객체의 ID가 없음, 같은 객체인지 판단 위해 각 속성의 값 비교
DTO (Data Transfer Object)
- 전송되는 데이터의 컨테이너, 데이터 전송을 위한 객체, 계층(layer)간 데이터 교환을 위한 객체
- 값을 유연하게 변경 가능 (가변성, mutable)
- 레이어와 레이어 사이에서 사용 가능
- 데이터 접근 기능(getter, setter)외의 기능 가지지 않음(정렬 등 데이터 표현을 위한 기능은 ok)
'Backend > spring' 카테고리의 다른 글
spring boot 개발환경 설정(spring initializr) (0) | 2023.08.18 |
---|---|
[spring] @RequestParam @RequestBody 차이점 (0) | 2023.05.25 |
spring bean 주입 방법 (0) | 2023.05.10 |
@RequestMapping @PostMapping @GetMapping 차이 (0) | 2022.10.09 |
spring logback (0) | 2022.06.10 |