[SPRING] org.hibernate.LazyInitializationException : 프록시를 초기화 할 수 없습니다 - 세션 없음
SPRINGorg.hibernate.LazyInitializationException : 프록시를 초기화 할 수 없습니다 - 세션 없음
내 웹 응용 프로그램이로드 밸런서가 관리하는 실제 서버가 2 대 있습니다. 나는 항상 얻는다 -
org.hibernate.LazyInitializationException : 프록시를 초기화 할 수 없습니다 - 세션 없음
서버 중 하나가 적중해도 다른 서버는 문제없이 원활하게 실행됩니다. 응용 프로그램에서 로컬 관리 캐시 저장소를 활성화하고 관리합니다. 이 예외는 한 테이블에서 하나의 특정 열에 액세스하려는 경우에만 발생합니다. 나머지 작업은 어떤 서버가 공격 받았는지에 관계없이 절대적으로 작동합니다.
lazy = false를 만드는 것은 테이블의 행 수가 상당히 많기 때문에 성능 문제가됩니다. 그런데 우리는 load (object) 대신에 get (object)를 세션에서 사용합니다.
해결법
-
==============================
1.필자가 제공 한 태그에서 스프링 프레임 워크를 사용하여이 문제에 부딪쳤다는 것을 추론합니다. Spring 데이터 org.springframework.data.jpa.repository.JpaRepository를 사용하는 동안 동일한 LazyInitializationException을 만났다.
필자가 제공 한 태그에서 스프링 프레임 워크를 사용하여이 문제에 부딪쳤다는 것을 추론합니다. Spring 데이터 org.springframework.data.jpa.repository.JpaRepository를 사용하는 동안 동일한 LazyInitializationException을 만났다.
@Transactional을 사용하여 데이터베이스에서 데이터를 검색하기 위해 Hibernate를 간접적으로 사용하는 메소드에 주석을 달아 문제를 해결했습니다.
-
==============================
2.액세스하려고하는 열이 엔티티에서 일종의 연관 (OneToMany, ManyToOne 등)으로 구성되어 있고 DAO에서 해당 연관을 채우지 않는 것 같습니다. 그런 다음, 당신이 그 컬럼 (코드에서 Hibernate Session이 존재하지 않는 위치)에 접근하려고 시도 할 때,이 컬럼은 채워지지 않는다. Hibernate는 그것을로드하려고 시도한다.
액세스하려고하는 열이 엔티티에서 일종의 연관 (OneToMany, ManyToOne 등)으로 구성되어 있고 DAO에서 해당 연관을 채우지 않는 것 같습니다. 그런 다음, 당신이 그 컬럼 (코드에서 Hibernate Session이 존재하지 않는 위치)에 접근하려고 시도 할 때,이 컬럼은 채워지지 않는다. Hibernate는 그것을로드하려고 시도한다.
실제로 그 협회에서 데이터를 사용하고 있기 때문에 EAGER는 실제로하고 싶은 것처럼 들립니다. 그리고 그 테이블이 너무 큰 경우, 테이블에 대한 쿼리가 효율적이되도록 인덱스를 조사해야합니다.
-
==============================
3.귀하의 개체가 분리됩니다. 액세스하기 전에 현재 세션에 다시 연결해야합니다.
귀하의 개체가 분리됩니다. 액세스하기 전에 현재 세션에 다시 연결해야합니다.
session.update(object);
또한 거래 내에서 액세스해야합니다.
문제 / 해결 방법에 대한 자세한 내용은 여기를 참조하십시오.
-
==============================
4.그것은 연관성 또는 속성입니까? 속성 인 경우 서버 중 하나가 비 계측 버전을 실행하고있는 것일 수 있습니다.
그것은 연관성 또는 속성입니까? 속성 인 경우 서버 중 하나가 비 계측 버전을 실행하고있는 것일 수 있습니다.
Lazy attribute fetching: an attribute or single valued association is fetched when the instance variable is accessed. This approach requires buildtime bytecode instrumentation and is rarely necessary.
from https://stackoverflow.com/questions/7654818/org-hibernate-lazyinitializationexception-could-not-initialize-proxy-no-sessi by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] NULL을 반환하는 싱글 톤과 @Autowired (0) | 2019.03.27 |
---|---|
[SPRING] 예기치 않은 반환 된 json은 "_links"로 철자가 지정된 "링크"와 구조가 서로 다릅니다 (Spring hateoas에서). (0) | 2019.03.27 |
[SPRING] Ehcache의 로깅을 설정하는 방법 (0) | 2019.03.27 |
[SPRING] Java 기반 어노테이션을 사용하여 구성된 Spring MVC를 사용하여 전역 적으로 404 개의 예외를 처리하는 방법 (0) | 2019.03.27 |
[SPRING] 여러 데이터 소스에 사용할 Spring 데이터 저장소 bean 이름 사용자 정의 (0) | 2019.03.27 |