주석을 사용하는 이유를 설명 할 수 있습니까 @Fetch(FetchMode.SELECT)
Sets
대신 Lists
을 사용할 수 있습니까? SUBSELECT
과 같은 다른 fetchmode 유형을 사용하면 어떤 차이가 있습니까? 부여 됨으로써 코드의 조각 아래 여기Java Persistence & Hibernate
:
class One{
..
@Fetch(FetchMode.SELECT)
@OneToMany(mappedBy="one", fetch = FetchType.EAGER, ...)
private List<Something> listOne = new ArrayList<Something>();
@Fetch(FetchMode.SELECT)
@OneToMany(mappedBy="one", fetch = FetchType.EAGER, ...)
private List<SomethingElse> listTwo = new ArrayList<SomethingElse>();
...
}
이런 식으로는 작동하지만 .... 내가 대안 솔루션을 다른 토론을 찾을 이유를 알고 싶습니다하지만이 하나가 아니라이었다 선호하는 ...
여기 두 가지를 혼합한다고 생각합니다. Hibernate가 레코드 세트를 Java Collection 객체에 매핑하는 방법은 실제로 Fetch 모드와 관련이 없다. 가져 오기 모드는 연결된 레코드를 가져 오는시기와 방법을 결정합니다. 일반적으로 OneToMany 또는 ManyToMany를 List 또는 Set에 매핑 할 수 있습니다. 질의에 ORDER BY를 포함하지 않으면 주문이 고정되어 있다는 착각을 불러 일으키기 때문에 목록이 속일 수 있습니다. 내 머리글의 맨 위에서 Hibernate는 Set에 대해 LinkedHashSet을 사용하므로 순서도 예측할 수 있습니다. – Frans
내게 문제가되지 않습니다. 가끔씩 오래된 라이브러리를 사용하고 있기 때문에 목록이 아닌 세트가 있어야합니다. (목록에서 수동으로 마이그레이션하지 않으려합니다.) ... – user1617013