@ManyToOne는 ****기본 Fetch 전략이 EAGER이고 @OneToMany는 기본 Fetch전략이 LAZY이다.
기본 Fetch 전략이 EAGER로 되어 있다면 엔티티를 조회할 때 정보가 필요 없는 하위 테이블 일지라도 조회해버린다. 그러므로 @ManyToOne에 LAZY 설정을 해둔다.
lazyinitializationexception 이라는 Exception이 발생했다.
우선 상황을 파악해보면
JWT Filter에서 가져온 User Entity는 이미 준영속 상태이다.
JWT Filter 단에서 이미 트랜잭션 처리가 끝난 상태이고, 더 이상 Lazy여서 Proxy로 채워진 List 변수는 영속성 컨텍스트에서 관리하지 않기 때문에 문제가 발생했다,
해당 User Entity를 영속화 시켜줘야 한다.
방법은 다양하지만 프로젝트에선 EntityManager 를 통해 DB에서 find() 해왔다.
조회해온 Entity의 List 변수는 Proxy로 채워져 있고, 해당 Service단의 메소드에서 트랜잭션 처리가 끝나 EntityManager가 close된 상태가 아니니 Lazy 방식대로 조회가 된다,