VO (Value Object) - 데이터 그 자체로 의미 있는 것을 담아 두는 객체
DTO (Data Transfer Object) - 전송되는 데이터 객체
빌더패턴 : 객체의 생성을 쉽게 한다.
@Setter를 사용하면 객체를 언제든지 변경할 수 있는 상태가 되어서 객체 안정성을 보장받기 힘들다. 즉, 무분별하게 사용하면 객체의 상태가 어디서 바뀌는지 모르는 문제가 발생한다.
이 문제의 해결방법으로는 Value Object로 만들어서 객체를 Value처럼 사용한다. 즉, 새로운 객체를 만드는 방법이 있다.
그래서 JPA에서 Update 작업시, 엔티티에서 @Setter를 사용하지 않고 빌더패턴으로(일부만 변경해서 새로운 객체를 생성하는 작업)을 사용했다. 즉, setter를 빌더패턴으로 대체했다.
하지만 이 방법은 문제점이 있다. Update할 때 객체를 복사하는 것은 얕은 복사로 인해 문제가 발생할 수 있다.
얕은 복사의 문제점은 객체가 실제 Value처럼 작동 되지 않고 다른 객체를 참조하면서 문제가 발생할 수 있다.
따라서 엔티티에 @Setter를 사용하였다.
'Spring' 카테고리의 다른 글
Bean 과 DI (0) | 2020.01.14 |
---|---|
IOC (0) | 2020.01.14 |
토비의 스프링3.1 - 템플릿 메소드 패턴, 팩토리 메소드 패턴 (0) | 2019.03.03 |
Spring Security + Spring MVC (0) | 2019.02.04 |
Spring Security (0) | 2019.02.03 |