카테고리 없음
15 - 2. Java - DTO vs VO
lukeit
2024. 11. 4. 13:08
DTO (Data Transfer Object) - 가변 객체
Setter 와 Getter가 있다
@Data
라는 Annotation을 사용할 수 있다이 Annotation안에 아래의 것들을 한번에 모아 정의해두었다
@RequiredArgsConstructor
@Setter
@Getter
@ToString
@EqualsAndHashCode
편의성을 제공하나, 신경써야할게 많아진다
- ex.) Final과 Non-Final을 꼭 구분해야한다
- 사용하지 않을 함수를 노출하게 될 수도 있다
// main Member aaron = new Member(1, "Aaron"); aaron.setAge(10); aaron.setEmail("aaron@gmail.com"); // Member @Data public class Member { private final Integer id; private final String name; private int age = 0; private String email; } // 이런식으로 비교도 가능하다 Member aaron = new Member(1, "Aaron"); aaron.setAge(10); aaron.setEmail("aaron@gmail.com"); Member baron = new Member(1, "Aaron"); baron.setAge(10); baron.setEmail("aaron@gmail.com"); System.out.println(aaron.equals(baron));
VO (Value Object) - 불변 객체
- 데이터를 불러다가 쓸수만 있다 (조작 불가능)
@Getter
만 있다@Value
를 사용해 아래 Annotation을 한번에 모아 정의해둘 수 있다@AllArgsConstructor
: 불변성을 위해 필드는 처음에만 세팅해둔다~~@Setter~~
불변성을 위해 세팅 이후 설정 불가능하게 막는다@Getter
@ToString
@EqualsAndHashCode
DTO 나 VO는 다양한 상황에 쓰기 어렵다.. 그래서 현업에서는 잘 사용하진 않는다
반응형