Memo/짧은 메모

[JPA] @ElementCollections

생각없이 해도 생각보다 좋다. 2022. 11. 21. 21:07

>@ElementCollections

: List, Set 같은 컬렉션 타입의 필드를 엔티티 연관 관계 매핑할 때 해당 애너테이션을 사용하면, 따로 상대 엔티티 클래를 생성하지 않아도 매핑하게 해주는 애너테이션

>상황 예시

-1:N

: 일대다 상황에서 테이블의 관계를 보면 1에 해당하는 테이블의 id가 N에 해당하는 테이블에 FK로 존재할 것이다.

: 일대다 상황에서 엔티티 객체 관계를 보면, 1에 해당하는 테이블에서는 N에 해당하는 엔티티 객체를 참조하기 위해서 List, Set 등으로 N의 객체를 참조할 것이고,  N에 해당하는 엔티티 객체는 1에 해당하는 엔티티 객체를 1의 엔티티 객체 참조형으로 참조할 것이다.

: 일반적으로는 1에 해당하는 정보가 어떤 다수의 N의 정보를 취하는지를 확인하는 것이 1:N 관계의 목표이다. DB내의 테이블에서는 이를 확인하는 것이 자연스럽지만, 엔티티 객체 상황에서는 순서가 정해져있어서 부자연스럽게 확인해야한다.

: JPA 특성상 FK를 갖게 될 테이블과 해당 테이블에 해당하는 엔티티 객체를 매핑하는 것이 필수이고, 이후 양방향 매핑을 옵셔널하게 사용해야한다.

: 이를 코드로 구현하기 위해서 일반적으로 FK를 갖는 테이블과 매핑되는 객체, 즉 N의 객체에서는 @JoinColume을 통해 FK를 갖는 매핑 애너테이션을 사용하고, 1에 해당하는 객체에서 N의 객체 정보를 사용하기 위해서, 즉 N 테이블의 FK를 갖기 위해서 Attribute인 (mappedBy = "")를 사용한다.

 

=>하지만, @ElementCollections을 사용하면 굳이 N의 테이블을 만들고 테이블 매핑 후 양방향 관계를 만들어주지 않아도 된다.

=>N : N 관계 또한 마찬가지이다.