developer tip

@OneToMany List <> 대 Set <> 차이점

copycodes 2020. 9. 12. 10:10
반응형

@OneToMany List <> 대 Set <> 차이점


내가 사용하면 차이가 있습니까

@OneToMany
public Set<Rating> ratings;

또는 내가 사용한다면

@OneToMany
public List<Rating> ratings;

둘 다 정상적으로 작동합니다. 목록과 집합의 차이점을 알고 있지만 이것이 최대 절전 모드 (또는 오히려 JPA 2.0)가 처리하는 방식에 차이가 있는지는 모르겠습니다.


지정된 인덱스 열이없는 경우 목록은 Hibernate에 의해 bag으로 처리됩니다 (특정 순서 없음).

Hibernate를 처리 할 때 한 가지 주목할만한 차이점은 단일 쿼리에서 두 개의 다른 목록을 가져올 수 없다는 것입니다. 예를 들어 Person연락처 목록과 주소 목록 이있는 엔터티가있는 경우 단일 쿼리를 사용하여 모든 연락처와 모든 주소가있는 사람을로드 할 수 없습니다. 이 경우 해결책은 두 개의 쿼리 (카티 전 곱을 피함)를 만들거나 하나 이상의 컬렉션에 a Set대신 a를 사용하는 것입니다 List.

그것은 당신이 정의 할 때 최대 절전 모드로 설정을 사용하는 것이 어렵다 equalshashCode엔티티와 엔티티의 불변의 기능 키가 없습니다.


List를 사용하는 경우 getter 함수에서 'Order BY'절을 지정할 수 있습니다. 세트로는 할 수 없습니다. order by 절은 부분적인 EJBQL을 포함 할 수 있습니다. 예를 들면

@OneToMany
@OrderBy("lastname ASC")
public List<Rating> ratings;

이 필드를 비워두면 목록이 기본 키 값을 기준으로 오름차순으로 정렬됩니다.

참고 URL : https://stackoverflow.com/questions/6562673/onetomany-list-vs-set-difference

반응형