연관관계 Collection은 SET이 좋을까 List가 좋을까?

Alex·2024년 12월 23일
0

CS를 공부하자

목록 보기
2/74

우선, List와 Set의 차이를 생각해보자

List는 순서가 보장되고 Set은 중복을 제거한다.

영한샘은 우선 Set을 쓰면 지연 로딩 때 성능 이슈가 있다고 하셨다. 개념적으로, 지연로딩은 필요할 때 데이터를 조회한다.

그런데, Set 특성상 컬렉션에 데이터를 추가할 때 중복 체크를 해야 한다. 조회를 하지 않더라도, insert를 할 때 중복 체크 때문에 컬렉션이 로딩된다는 말 같다.

List는 이런 문제에서 자유롭다.

하이버네이트 4.3 버전의 doc에서 위 내용이 나온다.

List의 중복문제?

How do Set and List collections behave with JPA and Hibernate

다만, 이 글에 따르면 중복 문제가 있는 것으로 보인다.

CASCADE를 MERGE, PERSIST, ALL 셋 중 하나로 준 경우
연관관계의 주인이 아닌 쪽에 객체를 생성하면, INSERT 쿼리가 두 번 발생해 중복이 생겼다고 한다.

다만,Hibernate 5.0.8에서 HHH-5855 이슈가 해결됐기 때문에 그 이후로 버전에서는 List를 사용해도 중복 문제가 발생하지 않는다(링크)

profile
답을 찾기 위해서 노력하는 사람

0개의 댓글