hibenate 에서 게 으 른 로드 사용 하지 않 기
게 으 른 로 딩 의 개념:게 으 른 로 딩 은 hibenate 의 지연 로 딩 입 니 다.hibenate 의 한 쌍 이 많 고 다 중 관계 에서 대상 내 비게 이 션 을 통 해 대상 을 조회 할 때 기본 적 인 것 은 게 으 른 로 딩 입 니 다.우리 가 대상 을 조회 할 때 기본 적 인 상황 에서 돌아 오 는 것 은 대상 의 대리 대상 일 뿐 입 니 다.사용자 가 이 대상 의 속성 을 사용 해 야 데이터 베이스 에 다시 조회 문 구 를 보 낼 수 있 습 니 다.게 으 른 로 딩 은 어떤 경우 에 불필요 한 sql 문 구 를 줄 일 수 있 지만 어떤 경우 에는 이상 을 던 집 니 다.
게 으 름 피 우 는 방법 을 소개 하 겠 습 니 다.
방식 1:
게 으 른 로 딩 을 사용 하지 않 을 실체 대상 의 설정 파일 에 lazy="false"를 설정 합 니 다.
예 를 들 면:
방식 2:
service 에서 이 프 록 시 대상 을 강제로 불 러 옵 니 다.service 층 이 업 무 를 제출 한 후에 session 이 닫 혔 기 때 문 입 니 다.그래서 session 이 닫 히 기 전에 이 프 록 시 대상 을 불 러 옵 니 다.
public Customer toedit(Customer customer) {
Customer c= customerDao.toedit(customer);
Hibernate.initialize(c);//
return c;
}
방식 3:주의:이런 방법 은 우리 의 no-session 문 제 를 효과적으로 해결 할 수 있 습 니 다.
이 방법 은 ssh 통합 에 사 용 될 때 방식 2 의 원인 과 같 지만 해결 방식 이 다 릅 니 다.이 방법 은 session 의 생명 주 기 를 연장 하여 session 을 jsp 페이지 에 불 러 온 후에 닫 는 것 입 니 다.
이 필 터 는 우리 가 쓸 필요 가 없습니다.spring 은 이미 우리 에 게 이러한 필터 류 를 제공 해 주 었 기 때문에 설정 만 하면 사용 할 수 있 습 니 다.
웹.xml 에 설정
<!-- no-session
filter session jsp session
: Filter struts2
-->
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
보충 지식:hibenate 에서 게 으 른 로 딩 과 급 로 딩 의 차이?1,fetch=FetchType.LAZY---게 으 른 로 딩
실 체 를 불 러 올 때 데이터베이스 에서 바로 불 러 오지 않 습 니 다.즉,데이터베이스 에서 메모리 로 불 러 옵 니 다.
2,fetch=FetchType.EAGER----급 로 딩
실 체 를 불 러 올 때 데이터베이스 에서 즉시 조회 하고 관련 클래스 도 동시에 조회 합 니 다.
우리 가@ManyToOne 등 을 사용 할 때,모두 기본 값 으로 급 불 러 옵 니 다.
이상 의 이 간단 한 이 야 기 는 hibenate 에서 게 으 름 을 피 우 고 사용 하지 않 는 작업 이 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 어 주시 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA 및 PostgreSQL 텍스트다음은 의 친구들과 논의한 후 오랫동안 초안으로 작성한 블로그 게시물이며 ( ) 주제에 대한 훌륭한 기사를 작성했기 때문에 여기에 작은 테스트를 게시하고 있습니다. JPA 주석 없이 String를 선언합니다. 재현하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.