hibenate 에서 게 으 른 로드 사용 하지 않 기

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 에서 게 으 름 을 피 우 고 사용 하지 않 는 작업 이 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 어 주시 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기