- DB에 있는 값을 꺼내와서 사용을 해야 할 때 많이 사용되는 객체는 vo와 dto가 있다. 거의 동일한 역할로 사용이 되고 있지만 미세한 차이가 있기 때문에 그 부분에 대해서 알아보고 ORM기술 중 하나인 JPA를 사용할 때 접할 수 있는 Entity까지 살펴보자.
[ Value Object ]
- 먼저 vo라고 많이 불리는 Value Object에 대해 알아보도록 하자.
- 데이터 그 자체로 의미있는 것을 담고 있는 객체
- Read-Only의 속성을 가져야 함
- 한 개 또는 그 이상의 속성들을 묶어서 특정 값을 나타내는 객체를 의미
- 객체 내부의 값이 동일한지 확인을 위해 Equals & Hash code 메서드를 재정의해함
[ Data Transfer Object ]
- vo와 비슷한 개념으로 많이 사용되고 dto라고 불리는 Data Transfer Object에 대해 알아보자.
- 전송되는 데이터의 컨테이너를 의미
- Layer 간의 통신 용도로 오가는 객체를 말하기도 함
- 비즈니스 로직이 dto내부에 존재하기도 함
- 데이터의 변경이 가능함
[ Entity ]
- JPA를 많이 사용해봤다면 DB와 데이터 통신을 위해 많이 사용했을 Entity에 대해서 알아보자.
- JPA가 관리하는 클래스
- JPA를 사용해서 DB 테이블과 매핑 시 반드시 @Entity 어노테이션을 붙여야 함
- 기본 생성자가 필수로 필요함
- Setter를 사용하기 보다는 바꿔줄 필드에 대해 변경 메서드를 정의해서 사용함
VO와 DTO의 속성을 거의 비슷하게 가지고있는 객체라고 생각이 된다.
(본 포스팅은 JPA관련 포스팅이 아니므로 이쯤에서 마무리하겠다.)
[ 개인적인 생각 ]
VO와 DTO를 상황과 의미에 맞게 잘 사용을 해주는 것이 좋다고 생각한다. 해당 객체의 역할을 생각하지 않고 VO로 통일을 해서 쓴다거나 DTO로 통일을 해서 사용을 해도 프로그래밍을 하는데 전혀 지장이 없지만 의미론적인 부분에서 이질감이 생기고 클린 코딩에서 멀어진다고 생각이 된다.
'웹 기초' 카테고리의 다른 글
JAVA 1.8 신 기능 (0) | 2022.02.04 |
---|---|
에자일 방법론(Agile) (0) | 2022.02.01 |
WebServer vs WAS (0) | 2022.01.31 |
HTTP vs HTTPS (0) | 2022.01.31 |