DTO
Data Transfer Object, 데이터 전송 객체라고 불리며 계층(Layer)간 데이터 교환을 위해 사용하는 객체입니다. 로직을 가지고 있지 않은 순수한 데이터 객체이며 getter/setter 메서드만 가지고 있습니다. 데이터를 전송하는 바구니라고 생각하면 됩니다.
VO
Value Object, 값 객체라고 불리며 특정한 값 그 자체를 표현하는 객체입니다. 서로 다른 이름을 가진 VO의 인스턴스가 모든 속성값이 같다면(hashCode, equals) 같은 객체라고 볼 수 있습니다. 또한 생성된 후 상태 변경이 불가능한 객체의 불변성을 보장합니다. DTO와 다르게 로직을 포함할 수 있습니다.
Entity
Entity는 실제 DB의 테이블과 매핑되는 데이터입니다. 또한 가변 객체로 생성 후 상태를 변경할 수 있으며 로직을 포함할 수 있습니다.
ID를 통해 객체를 구분합니다. 속성이 같더라도 ID가 다르면 서로 다른 객체라고 인식하고 반대로 속성이 다르더라도 같은 ID이면 같은 객체라고 인식합니다.
각 테이블 컬럼이 모두 선언되어 있어서 DTO를 대신해서 쓸 수 있지 않을까 고민하는 경우가 많은데, View에서 요청하는 값은 언제나 변경되는 값이고, 그때마다 Entity를 변경하면 영속성 모델을 구현한 Entity가 순수성을 잃어버릴 수 있어 권장하지 않습니다.
DTO와 Entity의 사용
참고자료
728x90
반응형
'Domain > Spring' 카테고리의 다른 글
[Spring] Component와 ComponentScan ( Component / SpringBootApplication / Bean ) (0) | 2021.09.12 |
---|---|
[Spring] 의존성 주입의 방식 ( Autowired / Inject / Resource / Bean / DI / Constructor / Setter / Field / 순환참조 ) (0) | 2021.09.10 |
[Spring] JDBC와 Transaction (0) | 2021.08.18 |
[Spring] JdbcTemplate (0) | 2021.08.09 |
[Spring] Bean ( Spring Bean ) (0) | 2021.07.23 |
댓글