값타입과 불변객체 값타입은 안전하고 단순하게 다룰 수 있어야 한다. 하지만, 값타입을 공유참조하며 문제가 생긴다. 임베디드 타입을 여러 엔티티에서 공유할 경우 부작용이 발생할 수 있다. 그렇기에 불변객체로 설계하는 방식을 사용한다. 불변객체란, 객체 타입을 수정할 수 없게 만들어 부작용을 원천 차단하는 방식이다. Constructor이후에 Setter를 통해 객체를 수정할 수 없게 사용하는 방식이다. 우아한 테크코스에서 Setter를 사용하지 않고 객체를 만들어 쓰라고 했던 기억이 있다. 이래서 그런건가 싶기도 하다. 값타입 컬렉션 값타입 컬렉션을 DB에 구현하는게 쉽지 않다. 컬렉션 자체를 테이블에 담는게 관계형 데이터베이스에 바로 넣기보단, 다른 테이블에 담아주어야 한다. 컬렉션을 구성하는 데이터로 ..