-
20221220 TIL @ElementCollectionTIL 2022. 12. 20. 17:02
관계형 DB에서는 숫자 타입, 문자열 타입, 날짜와 시간 타입의 값을 저장할 수 있다.
즉, 묶음 형태의 값은 함께 저장하지 못하고, 다른 테이블을 생성해서 저장해야 한다.
예를 들면 어떤 게시글에 태그들이 붙어있을 때, 게시글 테이블에 태그들까지 저장할 수 없다.
왜냐하면 하나의 게시글 테이블에 여러 개의 태그의 묶음이 관계형 DB에서는 들어가지 못하기 때문이다.
그렇다면 spring에서 어떤 엔티티에 묶음 형태의 필드를 넣으려면 어떻게 해야할까?
만약 엔티티로 이뤄진 콜렉션이라면 @OneToMany 어노테이션을 활용하면 되고,
String등의 primitive type이나 @Embeddable 어노테이션이 붙은 클래스로 이뤄진 콜렉션이라면
@ElementCollection 어노테이션을 활용하면 된다.
이 때 주의할 점은 @ElementCollection은 포함된 엔티티에 의해서 관리가 된다.
즉, 포함된 엔티티가 삭제될 때 함께 삭제되고, 해당 값들을 엔티티와 독립적으로 조회할 수 없다.
그리고 값 객체를 이용해서 @ElementCollection을 사용하는 경우에
값 객체에 @Embeddable 어노테이션을 붙여줘야 한다는 것을 까먹지 말자!
'TIL' 카테고리의 다른 글
20221222 TIL JPA에서 @Query를 이용한 사용자 정의 쿼리 날리기! (0) 2022.12.22 20221221 TIL 핸들링 해야하는 예외가 여러 개일 때 어떻게 하면 좋을까? (1) 2022.12.21 20221219 TIL 값 객체를 활용하기 (0) 2022.12.19 20221218 TIL 깃헙 프로젝트로 프로젝트 관리하기 (0) 2022.12.17 20221217 TIL E2E테스트를 코드로 작성하기 까다로운 부분을 어떻게 작성하면 좋을까? (0) 2022.12.17