숏커톤때 사용했던 어노테이션 "@ElementCollection" 에 대해
숏커톤 때 아무리 리스트를 엔티티 변수로 사용하고 싶어서 만들었다가 계속 에러나서 결국 인터넷에서 뒤지다가 나온 어노테이션 @ElementCollection에 대해 설명하려고 합니다!
@ElementCollection 이란??
간단하게 설명하자면 하나의 엔티티 변가 여러 개의 값을 가져야 할 때 사용하는 어노테이션입니다. 이를 통해 좀 더 효율적으로 데이터를 저장하고 관리할 수 있습니다.
예를 들어 한 사람이 여러 개의 취미를 가지고 있거나, 한 사람이 여러 이메일 주소를 가지고 있는 상황에서 사용하게 됩니다.
@CollectionTable 은?
이건 @ElementCollection을 사용할 때 대부분 같이 사용하는 어노테이션으로 @ElementCollection로 정의한 엔티티에 대한 정보를 담습니다. 주요 속성으로 name과 joinColumns이 있는데 name은 말 그대로 테이블의 이름, joinColumns는 연결할 키 값을 담습니다.
@ElementCollection VS @OneToMany
숏커톤 이후 공부하면서 헷갈렸던 점이 @ElementCollection과 @OneToMany에 차이점이었습니다. 가볍게 OneToMany에 대해 설명하자면 하나의 부모 엔티티와 여러개의 자식 엔티티를 연결하는 어노테이션입니다.
두 어노테이션의 가장 큰 차이점은 독립적입니다. @ElementCollection은 단순 변수로 사용되기 때문에 부모 엔티티에 대한 독립성이 매우 낮습니다. 반면 @OneToMany는 부모 관계는 있지만 자식 데이터가 독립적으로 관리됩니다.
예를 들어, @ElementCollection로 취미들에 대한 정보를 담았다고 한다면 취미는 한 유저가 가진 그 취미는 유저안에 속하게 되고 취미에 대해 따로 관리할 필요가 없습니다. 반면 @OneToMany로 블로그 글에 대한 정보를 담았다면 그 블로그 글은 독립적으로 굳이 유저 없이도 활용이 가능합니다.
이상입니다!! 감사합니다!!
댓글
로그인 후 댓글을 남길 수 있습니다.
아직 댓글이 없습니다.