Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Querydsl 발표

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Prochain SlideShare
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
Chargement dans…3
×

Consultez-les par la suite

1 sur 35 Publicité
Publicité

Plus De Contenu Connexe

Similaire à Querydsl 발표 (20)

Publicité

Plus récents (20)

Querydsl 발표

  1. 1. Querydsl Central MakeUs Challenge 9기 Server 무무 / 고범석
  2. 2. 시작하기 전에 왜 써야하는지 체감하는게 이번 발표에서 전달하고자 하는 바 메서드를 설명하는 것 자체가 무의미하다 판단 JPA의 이해도가 어느 정도 필요
  3. 3. 목차 1. 상황 설정 2. 요구사항 3. 요구사항 수정과 DTO를 통한 개선 4. Querydsl로 문제점 개선 및 설정 방법 5. 느낀 점과 유의사항
  4. 4. 상황 설정 - 인물 👶 응애 나 신입 백엔드 개발자 무무 JPA 사용한지 얼마 안됨 API를 설계해야 하는 상황
  5. 5. 상황 설정 - DB
  6. 6. 상황 설정 - Entity, 양방향
  7. 7. 상황 설정 - 요구사항 🧑🧑💻 하나의 게시글과 댓글들을 조회하는 API를 만들어주세요 게시글에는 ID, 제목, 내용 댓글은 ID와 내용이 필요해요
  8. 8. Entity 그대로 반환 ?
  9. 9. Entity 그대로 반환 ? 👶 ??
  10. 10. JSON 변환 시 문제 발생
  11. 11. Entity 그대로 반환 해결 👶 !
  12. 12. 상황 설정 - 요구사항 수정 🧑🧑💻 응답 객체에서 게시글 내용, 댓글 내용 모두 “contents” 라는 필드를 쓰는데 헷갈려요
  13. 13. Entity 수정하기 👶 이게 맞아..?
  14. 14. Entity 수정하기 👶 DTO가 있었지!
  15. 15. DTO 만들기
  16. 16. 서비스 레이어에서 DTO로 변환 후 반환
  17. 17. 엔티티들의 덩치가 커진다면? 컬럼이 많아지고 단순 조회 시 불필요한 컬럼들까지 @Repository에서 조회하는 상황 발생
  18. 18. 필요한 컬럼만 골라서 조회해보기
  19. 19. 필요한 컬럼만 골라서 조회해보기 👶 맨날 이래야하나?
  20. 20. Querydsl 사용 👶
  21. 21. build.gradle
  22. 22. QType
  23. 23. Preference (.gitignore)
  24. 24. Querydsl Preference
  25. 25. build.gradle task 추가 새로운 Q 타입 생성 시 꼬임 방지를 위해 task 추가
  26. 26. @Configuration
  27. 27. DTO 수정
  28. 28. DTO 수정
  29. 29. Repository
  30. 30. 결과
  31. 31. 써보고 느낀 점 - 컴파일 에러를 잡아주고 타입 세이프한 쿼리를 만들어 주는게 큰 장점이라 생각 - 직접 써본 바로는 SQL에서 사용할 수 있는건 거의 다 있음 (서브쿼리는 예외) - 동적 쿼리 - 실제 SQL과 거의 유사한 형태라서 가독성도 나쁘지 않음
  32. 32. 능사는 아님 - 쿼리를 좀 더 편하고 안정적으로 작성해주는 쿼리 빌더일 뿐 - 즉, JPA에서 발생하는 문제들은 고스란히 Querydsl에서도 존재 - @QueryProjection을 사용하는 DTO를 여러 계층에서 사용할 경우 해당 계층이 Querydsl에 의존적이어서 Trade-off
  33. 33. 참고자료 1. Gradle 부가 Task 작업 http://honeymon.io/tech/2020/07/09/gradle-annotation-processor-with-querydsl.html 2. Annotation 기반의 Querydsl 설정 https://gaemi606.tistory.com/entry/Spring-Boot-Querydsl-%EC%B6%94%EA%B0%80-Gradle-7x
  34. 34. Github Repository https://github.com/kobeomseok95/querydsl-session
  35. 35. 👋

×