본문 바로가기
반응형

@Transactional2

[Spring boot jpa] 연관된 엔티티 불러올때 LazyInitializationException 발생하는 문제 해결 지연 로딩하려 할 때 세션/entityManager이 닫혀 LazyInitializationException이 발생하는 문제 @OneToMany 관계에서 fetch의 기본값은 LAZY이다.@OneToMany(mappedBy = "house", cascade = CascadeType.ALL)private List rooms = new ArrayList();원인지연 로딩(Lazy Loading) 관련 오류FetchType.LAZY는 엔티티 관계에서 연관된 다른 엔티티를 지연 로딩 방식으로 로딩하겠다는 의미이다.그러나 지연 로딩을 사용하는 엔티티가 프록시 객체로 반환되기 때문에, 실제로 해당 엔티티가 사용될 때까지 로딩되지 않는다.이 때문에, 관계된 엔티티가 사용될 때 LazyInitializationExce.. 2025. 1. 25.
[Spring boot] DataJpaTest를 이용한 Repository 테스트와 여러 문제 해결 JPA를 활용한 Repository 테스트를 작성할 때, 실제 데이터베이스와 상호작용하는 테스트가 필요할 때가 많습니다. 이를 위해 H2와 같은 인메모리 데이터베이스를 사용하여 테스트 환경을 구축할 수 있습니다. 이때, @SpringBootTest와 같은 전체 애플리케이션 컨텍스트를 로딩하는 대신, @DataJpaTest를 사용하여 JPA 관련 컴포넌트만 로드하는 방법이 효과적입니다. 또한, @Transactional을 사용하여 테스트 후 데이터베이스 상태가 롤백되도록 보장할 수 있습니다. 이 포스트에서 다루는 문제 해결은 다음과 같습니다. (트러블 슈팅 경험)DataJpaTest이용시 의존받는 일부 bean를 로드하지 못하는 문제 해결@Autowired 어노테이션을 이용시 해당 인스턴스의 상태공유가 안.. 2025. 1. 25.