Backend/spring

Spring 구조 / 구성요소

dddzr 2021. 10. 4. 01:16

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)