지연로드를 사용하지 않으면 거의 모든 데이터베이스가로드 될 것입니다. 또한 모델에서 직접 직렬화를 사용하므로 때로는 프록시를 초기화해야합니다.JPA Hibernate 콜렉션이 지연로드되지 않음
컬렉션에만 지연로드를 사용하고 싶습니다. 일부 단수의 엔티티가 열심히 가져온 사실은 잘 작동합니다. 그러나 컬렉션을 설치하려고해도 프록시 컬렉션을 얻지 못해도 항상로드 된 컬렉션을 얻습니다.
이
몇 가지 예제 코드입니다 :@Entity
public class Thread implements Externalizable {
@OneToMany(mappedBy = "parentThread", fetch = FetchType.LAZY)
public List<Reply> getReplies() {
return replies;
}
그래서 여기에 문제는 디버거를 확인할 때, 응답의 persistantBag 목록은 항상 정보로 가득 실제 회신 빈 프록시 대신 객체입니다된다는 것입니다 나는 그것을 원한다.
thread를 원할 때 entityManager.find (Thread.class, "ID")를 사용하면 Fetch = FetchType.LAZY인지 여부와 상관없이 항상 이러한 모든 컬렉션이로드됩니다.
내가 이해하는 한, fetchtype lazy를 설정하면 원하는대로 작동해야합니다. 또한 엔터티를 thread.getReplies()를 사용할 때로드하여 직렬화하여 클라이언트에 보낼 수 있기를 바랍니다. getReplies가 지연된 (lazy)로드가 전혀 없으므로 프록시가있는 엔티티에서 작동하는지 여부는 알 수 없습니다.
나는 Intellij를 사용하지 않고 그것을 사용하여 최대 절전 모드로 JPA를 설정합니다. 나는 또한 컬렉션이 완전히 비어 있기를 원하는 유사한 질문을했지만 가능하다면 나는이 질문을 대신 요구하고있다.
JPA Hibernate want lazy load to return empty collection
은 아직 유래에이 겉으로는 기본적인 질문에 좋은 답변을 보지 못했다. JPA/Hibernate를 처음 접했을 때부터 질문이 실제로 교육적 방법으로 답변을 받았을 경우에만 링크로 회신 해주십시오.
미리 감사드립니다.
고마워요! 그리고 답을 수락하는 것을 잊어 버려서 죄송합니다.) 디버거가 실제로 내 뒤에서 내 혼란을 일으키는 메서드를 호출하는 것을 놓쳤습니다. –