[SPRING] 많은 관계를 설정하거나 목록을 최대 절전 모드로 전환 하시겠습니까?
SPRING많은 관계를 설정하거나 목록을 최대 절전 모드로 전환 하시겠습니까?
나는 자바 콩에서 많은 관계를 가지고있다. List를 사용하여 다음과 같이 변수를 정의 할 때 :
@Entity
@Table(name="ScD")
public class Group extends Nameable {
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.EAGER)
@JoinColumn(name="b_fk")
private List<R> r;
//or
private Set<R> r;
그 오류가 발생합니다 :
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0'
...
세트를 사용할 때 모든 것이 잘 작동하는 것 같습니다.
논리적 인 컨셉리스트 또는 세트 (목록이 중복되어있을 수 있고 설정 되었기 때문에 성능 및 기타 이슈들에 대해) 때문에 많은 관계를 사용할 많은 관계를 사용할 때 묻고 싶습니다.
해결법
-
==============================
1.관계형 데이터베이스 관점에서 이것은 집합입니다. 데이터베이스는 순서를 보존하지 않고 List를 사용하는 것은 의미가 없으므로 소위 인덱싱 된 컬렉션을 사용하지 않는 한 그 순서는 지정되지 않습니다.
관계형 데이터베이스 관점에서 이것은 집합입니다. 데이터베이스는 순서를 보존하지 않고 List를 사용하는 것은 의미가 없으므로 소위 인덱싱 된 컬렉션을 사용하지 않는 한 그 순서는 지정되지 않습니다.
집합을 사용하면 성능에 큰 영향을 미칩니다. List가 사용될 때, Hibernate는 PersistentBag 콜렉션을 사용하는데, 그 밑에는 끔찍한 특징이있다. 예 : 새로운 관계를 추가하면 먼저 기존 관계를 모두 삭제 한 다음 다시 삽입하고 새 관계를 삽입합니다. Set을 사용하면 새 레코드를 삽입하기 만하면됩니다.
세 번째 것은 - 하나의 엔티티에 여러 개의 List를 가질 수 없기 때문에 악의적 인 경우 여러 개의 bag 예외를 동시에 가져올 수 없습니다.
참조 :
-
==============================
2.Set의 고유성 요구 사항은 어떻습니까? 이것은 Hibernate가 컬렉션에 추가 될 때마다 새로 추가 된 객체가 유일하다는 것을 확인하기 위해 모든 객체를 검색하도록 강제하지 않습니까? 목록에는이 제한이 없습니다.
Set의 고유성 요구 사항은 어떻습니까? 이것은 Hibernate가 컬렉션에 추가 될 때마다 새로 추가 된 객체가 유일하다는 것을 확인하기 위해 모든 객체를 검색하도록 강제하지 않습니까? 목록에는이 제한이 없습니다.
from https://stackoverflow.com/questions/8174667/hibernate-many-to-many-relations-set-or-list by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring의 OpenEntityManagerInViewFilter를 사용하지 않는 이유 (0) | 2019.03.01 |
---|---|
[SPRING] Hibernate / Spring : 지연 초기화에 실패 - 세션이나 세션이 닫히지 않았습니다. (0) | 2019.03.01 |
[SPRING] 주석이 달린 @Controller를 사용하는 AbstractWizardFormController (0) | 2019.03.01 |
[SPRING] java.lang.AssertionError : junit Spring MVC Controller 동안 컨텐츠 유형이 설정되지 않았습니까? (0) | 2019.03.01 |
[SPRING] 싱글 톤 Bean은 동시 요청을 어떻게 처리합니까? (0) | 2019.03.01 |