Programing

@OneToMany와 @ElementCollection의 차이점은 무엇입니까?

crosscheck 2020. 8. 4. 22:55
반응형

@OneToMany와 @ElementCollection의 차이점은 무엇입니까?


둘 다 일대 다 관계에서 작동하기 때문에 a @OneToMany@ElementCollection주석을 사용하는 것의 차이점은 무엇입니까 ?


저는 믿습니다 @ElementCollection주로하면서 (임베드 또는 기본) 이외의 엔티티를 매핑하기위한 @OneToMany엔티티를 매핑하는 데 사용됩니다. 어떤 것을 사용할 것인지는 달성하고자하는 것에 달려 있습니다.


ElementCollection는 표준 JPA 주석이며, 이제 독점 Hibernate 주석보다 선호됩니다 CollectionOfElements.

컬렉션이 엔터티의 컬렉션이 아니라 간단한 형식 (문자열 등)의 컬렉션 또는 포함 가능한 요소의 컬렉션 (으로 주석이 달린 클래스 @Embeddable)을 의미합니다.

또한 요소가 포함 된 엔티티에 의해 완전히 소유됨을 의미합니다. 엔티티가 수정 될 때 수정되거나 엔티티가 삭제 될 때 삭제되는 등의 요소입니다. 자체 라이프 사이클을 가질 수 없습니다.


@ElementCollection단순 또는 내장 유형으로 일대 다 관계를 구현하려는 경우 코드를 단순화 할 수 있습니다. 예를 들어 JPA 1.0에서는의 목록과 일대 다 관계를 원할 때 기본 키와 해당 키만 포함 String하는 간단한 엔티티 POJO ( StringWrapper) 를 만들어야했습니다 String.

@OneToMany
private Collection<StringWrapper> strings;

//...

public class StringWrapper {
  @Id
  private int id;

  private String string;
}

JPA 2.0을 사용하면 다음과 같이 간단히 작성할 수 있습니다.

@ElementCollection
private Collection<String> strings;

더 간단하지 않습니까? @CollectionTable주석을 사용하여 테이블 및 열 이름을 계속 제어 할 수 있습니다 .

또한보십시오:


기본 또는 포함 : @ElementCollection
엔티티 : @OneToMany 또는 @ManyToMany

@ElementCollection :

  • 관계는 관계가 정의 된 엔티티에 의해 관리됩니다 (전용).
  • 표에는 소유 엔티티에 대한 id 참조와 기본 또는 포함 된 속성이 포함됩니다.

@OneToMany / @ManyToMany :

  • 다른 엔티티에 의해 관리 될 수도 있습니다
  • 결합 테이블 또는 열에는 일반적으로 ID 참조 만 포함됩니다.

@ElementCollection컬렉션을 표시합니다. 이것이 반드시이 콜렉션이 1-n 결합을 참조한다는 것을 의미하지는 않습니다.


ElementCollection은 맵핑에 대한 맵핑 또는 테이블을 대체 할 수 있으므로 여러 엔티티가 동일한 Embeddable 클래스를 참조하도록 할 수 있지만 각각의 종속 오브젝트를 별도의 테이블에 저장하도록 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/8969059/difference-between-onetomany-and-elementcollection

반응형