Base/개념정리
Model 클래스 구분
findmypiece
2021. 3. 12. 13:24
728x90
개발을 하다보면 언어에서 기본적으로 제공되는 데이터타입을
별도로 만든 클래스 단위로 묶어서 관리해야 한다.
일반적으로 VO, DTO 라고 불리는 클래스 들인데
나름대로 정리한 규칙과 구분방법을 정리해보았다.
- JPA Entity와는 구분한다.
통합해서 관리할 경우 Dirty Checking으로 원치 않게 DB 수정이 일어날 수 있다. - set{필드명} 형태의 Setter 메소드는 만들지 않는다.
값 변경의 의도와 목적을 명확히 나타낼 수 있도록
approve, reject 같은 이벤트 형태로 작성하도록 한다. - 일반적으로 VO, DTO 를 불변, 가변으로 구분짓는데
내 경우는 그렇게 구분하지 않고 있다.
대부분 불변으로 하되 VO든 DTO든 필요에 따라 얼마든지 가변이 될 수 있고
이벤트 형태로 변경의 의도와 목적을 명확히 표현할 뿐이다.
해서 나는 Value Object(VO), Data Transfer Object(DTO)라는
본래 뜻에 가깝게 구분하려고 노력한다. 예를 들면 아래와 같다.
- VO: 언어에서 기본적으로 제공하는 데이터 타입을 업무에서 사용되는
의미있는 명칭으로 묶어서 관리하는 클래스
DTO: 언어에서 기본적으로 제공하는 데이터 외에 VO를 포함해서
타 서비스와 통신규격에 맞게 묶어서 관리하는 클래스
728x90