일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- LAN WAN
- SW설계
- SW분석
- 자바스크립트 JQuery
- LG그램2017
- USB-C충전
- 소프트웨어설계
- open cursors
- USB-C to HDMI 아답터
- SI와 SM 차이점
- 자바튜닝
- tvheadend
- 객체설계
- EXK
- 자바개발
- Data Transfer Object(DTO)
- docker 네트워크
- maven #junit
- 구글캘린더 검색
- 실해하지 않는
- sonoff
- Tomcat error-page version
- 프로젝트관리
- 경력개발자
- SpringBoot
- 네트워크 기본개념
- CBD 단점
- Value Object(VO)
- angular 6
- ASUS 공유기
- Today
- Total
대빵's Blog
VO 와 DTO 의 차이점 본문
프로젝트를 하다보면 본인들도 왜 그렇게 하는지 모르면서 습관적으로 설계 하거나 개발하는 것들이 상당히 많이 있다.
VO(Value Object) 와 DTO(Data Transfer Object) 도 아마 그러한 것들중 하나일 것 같다.
이것 개념들은 사실 예전에 Layered Architecture 가 유행하기 전에는 거의 사용되지 않던 개념인데 여러가지 Layered Architecture 들이 유행하면서 Data 를 서로 주고 받기 위해서 사용되었다고 생각하면 된다.
DTO 는 이름에서 알수 있듯이 각각의 Layer 또는 Client Server 간 데이터를 묶음으로 주고 받기 위한 용도이다.
여러개의 데이터들을 의미있는 구조로 설계하고 이를 묶음로 주고 받으므로서 생산성과 데이터무결성에 도움을 준다.
사실 항상 문제는 VO 에서 발생하는 경우가 많다. 문제라기 보다는 VO 를 DTO 로 정의하고 사용하는 경우들이 많다.
그럼 VO 는 무엇일까 Value Object 는 한글로 번역하기 좀 애매하다.(값 객체 ?)
VO 의 대표적인 예를 들어보면 돈(금액) 을 예로 들수 있다.
금액은 단순하게 숫자 한개의 컬럼만으로는 처리가 어려운 경우가 많다. 예를 들어 국제적인 쇼핑몰인 경우 금액은 최소한 [화폐단위, 금액, 시점] 이 세개의 정보를 포함해야 한다.
2018.10.10일 현재 달러로 1000달러 인 물건은 Price(2018/10/10, 1000, $) 이렇게 세개의 값을 묶어야 하나의 Value 로 처리가 가능하다.
이와 비슷한 정보로는 우편번호(숫자 , 국가정보, 적용시점), 일자(숫자, 음력/양력등 달력의 종류) 등이 존재한다.
국내환경에서만 개발하는 경우 여러가지 요소들 중에서 불변인 요소들이 있기 때문에 금액은 단순 숫자, 일자는 양력, 우편번호는 숫자 5자리 와 같이 Single Value 로 처리하는 경우가 많지만
소프트웨어의 특성상 VO 가 필요한 환경에서는 VO는 VO로 정확하게 설계/개발하고 DTO 는 DTO로 설계/개발하는 것이 차후 프로젝트가 망하지 않는 지름길이다.
'개발관련' 카테고리의 다른 글
실패하지 않는 SI 프로젝트의 필수요건 (0) | 2018.11.05 |
---|---|
실력있는 개발자가 인정받지 못하는 이유 (0) | 2018.10.24 |
Spring Security + Angular 6 설정하기 (0) | 2018.09.26 |
springboot commandline 한글(윈도우) 깨짐 해결 (0) | 2018.08.24 |
springboot mvn 실행시 profile 파라미터 설정 (0) | 2018.08.22 |