최대 절전 모드에서 지연로드를 어떻게 비활성화 할 수 있습니까? hbm xml 파일이 아닌 지속성 주석을 사용하고 있습니다.최대 절전 모드에서 지연로드 사용 안 함
ID로 단일 개체를 가져오고 모든 속성을로드하려고합니다. 개체를 사용하기 전에 세션이 닫힙니다.
감사합니다.
최대 절전 모드에서 지연로드를 어떻게 비활성화 할 수 있습니까? hbm xml 파일이 아닌 지속성 주석을 사용하고 있습니다.최대 절전 모드에서 지연로드 사용 안 함
ID로 단일 개체를 가져오고 모든 속성을로드하려고합니다. 개체를 사용하기 전에 세션이 닫힙니다.
감사합니다.
당신은 당신이 FetchType.EAGER
당신이 볼@ManyToOne(fetch = FetchType.EAGER)
로드 비 지연 원하는 속성에 주석을해야합니다, 당신이 그로드 게으른로드 객체가 아닐 수도 있습니다. 오히려, 그 객체의 연관성은 게으르다. 그리고 그것이 당신이 원하는 행동인지를 그들에게 알릴 필요가있다.
이러한 개체에도 열심히로드 할 연결이있는 경우 해당 개체에도 주석을 추가해야합니다.
당신은 재귀 적으로 모든 협회에 fetch = FetchType.EAGER
를 지정할 수 있습니다, 그러나 이것은 당신은 아마에 관심이있어 데이터의 전체 무리를로드 할 것입니다.
그것은 일반적으로 적어도 모든 OneToMany 및 ManyToMany 연결을 할 수있는 더 좋은 솔루션입니다 LAZY (기본값)로 설정하고, 유스 케이스에 필요하다면 세션을 닫기 전에 초기화하십시오 (또는 임시 쿼리로로드 할 수도 있습니다).
OneToOne 및 ManyToOne 연결은 기본적으로 EAGER이며, 이미 너무 많은 요청을 생성합니다. 모든 유스 케이스가 연관을 가져와야하는 경우가 아니면 모든 것을 게으름 뱅이로 표시하는 것을 선호한다.
lazy를 해제하려는 모든 콜렉션 및 엔티티에 대해 fetch = FetchType.EAGER를 사용하십시오.
또한이 체크 아웃 :이 질문에 대한 http://techblog.bozho.net/?p=645
내 추가 : 내가 대신 프록시의 빈 컬렉션이 나타나는 방식으로 게으른 로딩을 해제 할 수 있습니까? –