스프링에 대해서 공부를 하다보니 에너테이션을 정의하는 부분에서 나온 내용에 대해서 조금 더 자세히 정리하고자 알아보았다.

 

구박사에게 Spring Web Layer를 검색하면 무수히 많이 나오는 이미지....잘쓰겠습니다

 

Web Layer

 

컨트롤러(@Controller)와 JSP/Freemaker 등의 뷰 템플릿 영역

필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역을 말함

 

Service Layer

 

@Service에 사용되는 서비스 영역

Controller 와 Dao의 중간영역에서 사용함

@Transaction이 사용되어야 하는 영역

 

Repository Layer

 

Datebase의 값이 데이터 저장소에 접근하는 영역

Dao(Data Access Object) 영역을 말함

 

 

추가로 내가 웹개발을 처음 배울때 DTO라는 객체를 사용했는데, 언제부터인가 VO라는 객체를 사용하고 있다.

그래서 이왕 알고 쓰면 더 좋다고....  vo와 dto의 정의와 차이점에 대해서도 좀 알아보았다.

 

VO (Value Object)

  • 데이터 그 자체로 의미 있는 것을 담고 있는 객체
  • DTO와 동일한 개념이지만 Read-Only 속성이다.
  • 간단한 독립체(Entity)를 의미하는 작은 객체를 의미한다.
  • DataBase레코드를 구성하는 필드들을 VO의 Attribute로 하고 해당 변수에 접근 할 수 있는 Getter와 Setter 메소드의 조합으로 형성되어진 클래스이다.
  • 거의 불변성을 가지고 equals()로 비교할 때 객체의 모든 값을 비교해야 한다.

 

DTO (Data Transfer Object)

  • 전송되는 데이터의 컨테이너이다.
  • VO와 동일하게 데이터를 저장하여 사용하도록 하는 부분에서 필요하다
  • VO와 비교하면 DTO는 같은 시스템에서 사용되는 것이 아닌 다른 시스템으로 전달하는 작업을 처리하는 객체이다.
  • Layer 간의 통신 용도로 오가는 객체를 말하기도 한다.

 

VO는 사용되는 값이 객체로 표현되며 변경이 없는 경우에 사용함.

DTO는 데이터의 전송을 위한 객체이며, 비지니스 로직까지 담아서 사용하기도 함.

 

하지만 VO / DTO는 사용용도를 구분하는것이 무의미하다.

개발팀 내에서 용도를 정하고 사용한다면 VO와 DTO 무엇을 사용해도 문제가 되지 않을 것 같다.

'Backend > Spring Framework' 카테고리의 다른 글

[Spring] REST / RESTful  (0) 2022.07.25
[Spring] IoC (제어권 역전) 와 DI (의존성 주입)  (0) 2022.01.24
[Spring] @Transactional @@@@@  (0) 2022.01.21
[Spring] Annotation @@@@@ 정리  (0) 2022.01.14
[Spring] Spring MVC Pattern  (0) 2022.01.14

+ Recent posts