Jo-wonbin / SpringBootPracticeProject

0 stars 0 forks source link

org.hibernate.LazyInitializationException #25

Open Jo-wonbin opened 7 months ago

Jo-wonbin commented 7 months ago

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.wonbin.practice.entity.BoardEntity.boardFileEntityList: could not initialize proxy - no Session at

Jo-wonbin commented 7 months ago

Lazy Loading 때문에 발생하는 LazyInitializationException이 발생하였다.

원인

boardEntity List에서 일대다 매핑된 boardFileEntity 객체를 사용하는 시점에 DB 로드하게 되었다. 결국 for문 루프를 돌릴 때 마다 DB 조회를 하게 되어 오류가 발생하였다.

해결방법

  1. @Transactional 태그를 서비스에 사용하여 DB 조회 연결을 지속한다.
  2. Eager Loading을 사용하여 즉시 boardFileEntity 객체를 불러온다.

1번의 방법으로 해결하였다. 즉시 로딩 방식은 게시글만 조회할 때, 필요없는 파일 객체도 같이 조회되기 때문이다.