인프런 - JPA 활용 2 완강

jihunnit·2022년 7월 3일
0

spring-inflean

목록 보기
4/5
post-thumbnail

인프런 김영한님의 JPA 활용 - 2 완강!

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

사실 완강한지는 좀 됐는데, 요새 일이 많아서 글을 정리해서 쓸 시간이 없었다. 꾸준히 하기 힘든 일이다. 변명으로 시작

일단은 이번 강의는 저번 강의에서 주로 타임리프를 이용해 진행하던 SSR(Server Side Rendering)이 아니라, 프론트 혹은 앱과의 연계를 고려해서 진행하는 API 방식이 위주였다.

한마디로 필요에 따라 JSON format으로 우리의 데이터들을 잘 가공해서 만들고 DB에서 빠르게 가져오고 그러는게 핵심이다.

특히 강의에서 강조되는 내용은 이렇게 정리할 수 있을 것 같다.

1. 어떻게 데이터를 가공할 것인가?

2. 어떻게 쿼리를 최적화 할 것인가?

이 문제에 대한 답 또한 영한님이 굉장히 명확하게 제공해주신다.

1 -> DTO를 통해서 데이터를 가공하자!

엔티티를 그대로 반환하거나, 변수로 받거나 하는 것이 얼마나 안좋은지를 강의 내내 강조하신다. 또한, 단순히 LIST를 성공적으로 DTO로 변환하고 반환하고 끝. 아니라 이게 어떻게 하는게 더 좋을지에 대해서도 얘기를 해주신다. 그래서 내가 이 부분을 보고 글을 작성했던 것이다.

JPA 활용 2를 듣다가 LIST 반환 대체하기

2 -> N+1 문제의 해결을 통한 쿼리의 최적화

JPA에서 조회할 때 성능적으로 문제를 일으킬만 한 부분은 아무래도 N+1 문제가 아닐까 싶다. 이제 객체의 리스트 하나를 가져오면 그 리스트의 사이즈만큼 연관객체들 전부를 가져오는, 즉 1의 리스트를 조회하면 리스트 사이즈 N만큼 연관객체 조회 쿼리를 날리는 안습한 상황을 어떻게 해결할것인가. 라는 것에 대해 심층적으로 다룬다. 게다가 여기에서는 페이징 등 다양한 요소에 대해서도 언급해주면서 어떤 방식이 좋을지에 대해 알려주신다.
약간 수학문제 풀때도 한 문제를 해결할 때 여러가지 접근 방식이 있는걸 알려주는 선생님들이 계시지 않은가? 딱 그 느낌이다!
이 부분의 강의를 보고서도 영감을 얻어 글을 작성했다.

JPA 활용 2 수강중 - N+1 문제 해결 방법에서 뻗어나가기

나는 지금 CEOS 15기 의 팀 AllG 에서 백엔드 개발자로서 일하고 있는데, 우리의 서비스는 아무래도 api를 통해 우리 DB에서 데이터를 조회할 많다고 생각이 든다. 여기서 배운 N+1 등 조회 최적화가 매우 유용하게 쓰일 것 같다는 생각이 든다.

여튼간에 정말 만족스러운 강의였다. 역시 기대를 저버리지 않는다.
그리고 마지막에 다룬 JpaRepository와 QueryDsl 또한 너무나도 기대되는 친구들이다. 나는 로드맵을 구매했으니 ^~^ 얼른 강의를 다 보구 싶다!

감사합니다. 영한선생님.

profile
인간은 노력하는 한 방황한다

0개의 댓글