본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


JPA

SPRING - JPA를 활용한 API 개발 (비권장)

반응형

-API개발 양방향 연관관계 주의점

 

1.API 개발시 양방향 연관 관계에서는 한쪽에 @JSONEgnore를 걸어 주지 않으면  Jackson 라이브러리에서 양쪽을 왔다갔다하며 JSON 데이터를 무한으로 만들어 무한루프에 빠지게된다 . 

 

2.지연로딩(Lazy Loading) 으로 해놓을 시 Jackson 라이브러리가 프록시를 인식하지 못해 오류가 난다. 

-해결방법 

 

bulid.gradle에  라이브러리를 등록해준다.

 

빈으로 등록시켜 애플리케이션 실행시점에 실행 되도록 빈으로 만든다

애플리케이션을 실행시켜 postman으로 테스트를 해보면

데이터를 가져오긴하나 레이지로딩이 무시되어 DB에 갔다 오지는 않기 때문에 DB에 저장된 데이터는 null로 표시되었다

 

-강제로 레이지 로딩을 시키는방법

Hibernate5Module 속성을 이용해 강제로 레이지 로딩을 시킨다

 

모든 값이 표시된다.

 

주의점

-DTO를 활용해 가급적이면 필요한 데이터만 API 스펙에 노출하는 것이 좋다.

-지연로딩을 피한다고 즉시로딩을하게되면 해당 엔티티와 연관관계를 갖는 모든 것을 불러오기 때문에 성능 최적화가 되지 않는다

-기본으로 lazy로딩을 하고 성능 최적화가 필요하다면 fetch 조인을 사용하는 것이 좋다.

 

** 위와같이 엔티티를 웹상에 노출하는 방식은 좋은 방식이 아니기 때문에 이런 방법이 있구나 정도로 알고 넘어가면 좋을 것 같다.

 

 

반응형