반응형
개발 중, Database 설정을 통해 DB 값을 가져오는 과정에서 다음과 같은 오류를 경험했습니다
에러내용 :
JPA Could not write JSON: failed to lazily initialize a collection of role
상황 설명
저는 두 개의 Database를 연결하여 사용하는 환경에서 작업하고 있었습니다. 그런데 Sub Database의 값을 가져오는 과정에서 위와 같은 오류가 발생했습니다.
JPA를 사용중이었는데 연결된 table 의 정보를 가지고 올 때 @OneToMany(fetch = FetchType.LAZY)
옵션이 문제가 되었습니다.
추측 원인
개인적으로는 Sub Database를 사용하는 경우, EntityManager
가 유지되지 않아 LAZY
옵션이 유효하지 않았던 것으로 판단됩니다.
즉, EntityManager가 작업 도중 닫혀서 관련 데이터를 초기화할 수 없게 되어 오류가 발생한 것입니다.
해결 방법
문제를 해결하기 위해 @Transactional
어노테이션을 사용했습니다.
이 어노테이션은 메서드 내에서 트랜잭션을 보장하여, 모든 작업이 완료될 때까지 EntityManager를 유지시켜줍니다.수정된 코드는 아래와 같습니다.
위와 같은 방식으로 코드를 수정한 후, 정상적으로 개발을 진행할 수 있었습니다.@Transactional
을 사용하여 트랜잭션 범위를 명확히 정의한 것이 문제 해결의 핵심이었습니다.
반응형
'Spring' 카테고리의 다른 글
Controller vs Handler (0) | 2024.08.29 |
---|---|
spring - handler(핸들러)란 무엇인가? (1) | 2024.08.29 |
Spring database config bean 다중 설정 예제 by JPA (0) | 2024.04.04 |
Spring database config bean 설정 예제 by JPA (0) | 2024.04.04 |
Spring AOP, AOP 용어 정리 (0) | 2022.07.05 |