@OneToMulti와 @ElementCollection의 차이점?
a를 사용하는 것과 다른 점은?@OneToMany
, 그리고@ElementCollection
두 가지 모두 일대다 관계에서 작동하기 때문에 주석 작성?
ElementCollection
표준 JPA 주석이며, 현재 전용 최대 절전 모드 주석보다 선호됨CollectionOfElements
.
실체의 집합이 아니라 단순한 유형(String 등)이나 임베디드 요소(class advined)의 집합임을 의미한다.@Embeddable
).
이는 또한 요소를 포함하는 기업이 완전히 소유한다는 것을 의미하는데, 그 요소는 기업이 수정될 때 수정되고, 기업이 삭제될 때 삭제된다.그들은 그들만의 라이프사이클을 가질 수 없다.
믿어요@ElementCollection
주로 비 멀티캐스트(기본 또는 비 멀티캐스트) 매핑을 위해 사용되며,@OneToMany
도면요소를 매핑하는 데 사용된다.그래서 어떤 것을 사용할 것인가는 당신이 성취하고자 하는 것에 달려 있다.
@ElementCollection
단순하거나 내장된 유형으로 일대다 관계를 구현하고자 할 때 코드를 단순화할 수 있다.예를 들어, JPA 1.0에서 목록과 일대다 관계를 가지려고 할 때String
s, 단순 도면요소 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은 매핑 또는 해당 집합에 대한 테이블을 재정의할 수 있으므로 여러 엔티티가 동일한 Embdable 클래스를 참조하도록 할 수 있지만 각 엔티티가 종속 개체를 별도의 테이블에 저장하도록 할 수 있다.
@ElementCollection
이 주석은 비엔티티와 관계가 있고 이러한 연관 관계가 HAS-A일 때 적용된다. 모든 컬렉션은 테이블로 생성되며 Foreign Key에 의해 관계를 얻는다.
두 가지 유형의 요소 집합이 있다.
- 색인(목록, 지도)
- 비색인(설정)
색인: 색인 유형 집합에 3개의 열이 있는 표가 있음
- 키 열(포기 키)
- 인덱스 열(수집 중인 데이터의 위치)
- 요소 열(데이터)
비색인:비색인 유형 집합에는 2개의 열이 있는 테이블이 있음
- 키 열
- 요소 열
참고: 여기서는 "SET는 삽입 순서를 유지하지 않기 때문에 인덱스 열이 없다.
다중성
This is a way to implement the HAS-A relation between two entities and the cardinality ratio depends on their relation.@OneToMany 사용 시 ElementCollection replace를 사용할 수 있다.여러 버전에서 하나의 프로젝트를 사용할 수 있는 예.
@ElementCollection
@CollectionTable(name="versions",
joinColumns = @JoinColumn(name="projectID"))
@LazyCollection(LazyCollectionOption.FALSE)
@JoinColumn(name="version",nullable = false)
private Set<String> versions;
또한 하나의 집합에서 어레이에 대한 OGM을 매핑할 때 @ElementCollection을 사용할 수 있다.
@ElementCollection(fetch = FetchType.EAGER)
private Set<String> researchAreas;
참조URL: https://stackoverflow.com/questions/8969059/difference-between-onetomany-and-elementcollection
'IT이야기' 카테고리의 다른 글
도넛 차트.js의 vue 성분 중첩 텍스트 (0) | 2022.05.20 |
---|---|
v-if를 사용하여 vuex를 통해 단락을 숨기는 방법 (0) | 2022.05.20 |
반복하는 동안 해시맵에서 키를 제거하는 방법 (0) | 2022.05.20 |
C에서 외부 프로그램을 실행하고 출력을 구문 분석하려면 어떻게 해야 하는가? (0) | 2022.05.20 |
v-if, v-else, v-else-if에서 동일한 구성 요소 태그가 Vue 인스턴스를 공유하지 못하도록 방지 (0) | 2022.05.20 |