반응형

JPA

https://jsonobject.tistory.com/605

 

Jackson 라이브러리는 기본적으로 엔티티의 Getter 메서드를 사용하여 JSON을 생성합니다.

따라서 Getter 메서드가 있고, 그 메서드가 연관 엔티티에 대한 접근을 포함하고 있다면,

Jackson은 해당 메서드를 호출하게 됩니다.

 

FetchType.LAZY로 설정된 연관 엔티티가 있을 경우,

Jackson이 해당 연관 엔티티의 Getter 메서드를 호출하면, JPA는 연관된 엔티티를 로드하려고 시도합니다.

만약 이 시점에서 JPA 세션이 닫혀 있으면 **LazyInitializationException**이 발생하게 됩니다.

 

해결방법

→ 연관엔티티가 있다면 Jackson 라이브러리가 Getter를 동작시키기 때문에 DTO를 사용해줘야 함

 

Jackson의 @JsonIgnore 어노테이션 사용: LAZY로 설정된 연관 엔티티의 Getter 메서드에

@JsonIgnore 어노테이션을 추가하여 Jackson이 해당 메서드를 호출하는 것을 방지합니다.

근데 결국, 연관 엔티티를 보내야 되는 경우가 있을 것이고, 그냥 DTO를 사용하는 방법이 제일 좋다.

반응형

+ Recent posts