![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d1e5e10a-bb27-47f5-9d1f-a557edc7a5fe/Untitled.png)
- 값 타입을 컬렉션에 담아 사용하는 경우
- 필드가 아닌 컬렉션일 경우, 별도 테이블을 두어 구성해야한다.
- CLOB, BLOB을 쓸수는 있지만 전통적으로는 테이블을 두어 사용함.
- @ElementCollection, @CollectionTable
어노테이션 사용.
- Join할 때 사용할 외래키를 지정해주어야 한다.
- 값타입 컬렉션은 Cascade 속성을 가짐
- 고아객체 제거 역시 동일
- 값 타입 컬렉션은 모두 지연로딩(LAZY fetch)
![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/18861dcc-c228-4705-b853-aafc12289c61/Untitled.png)
값 타입의 수정
- 값 타입은 절대 setter를 지정하면 안된다.
- 여러 엔티티가 공유할 수 있기 때문에 문제가 발생할 가능성이 매우 큼
- 따라서 새로 객체를 할당해주자.
- String과 같은 사용자 지정 객체가 아닌 컬렉션의 경우, remove add 해주어야함.
![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/89546c5f-be4b-41a6-adcf-9014bf22d761/Untitled.png)
![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/39d2669a-6cee-4142-8fb9-bf6993d38963/Untitled.png)
사용자 지정 객체 컬렉션의 수정
사용자 지정 객체 컬렉션은 remove메소드를 활용하며 이때를 위해 반드시 equals
![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4300171c-0bc7-45f9-aafd-1935d94a4d15/Untitled.png)
- 위와 같이 equals, hashCode를 오버라이딩 한다.
- 아래와 같이 remove메서드를 활용하여 객체를 삭제해준다. (.remove는 equals 메소드를 기본으로 동작)
![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ddeb3b56-b547-48d7-8390-c40ebe04deeb/Untitled.png)
- 다음과 같이 값이 다른 새로운 객체를 할당해준다.
![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e62919a6-a8a5-48d5-b039-bb15b43c2414/Untitled.png)