0810 미니프로젝트(3)

허크·2023년 8월 10일
0

JPA, N+1 이슈

  • 불필요한 select query 발생
  • 1+N으로 이해
  • ORM 사용의 이슈

: 해결방안

  • Fetch join
  • @BatchSize

JPA, query method

: 메소드를 통한 쿼리 자동 생성

  • 네이밍 컨벤션
  • JPQL

: @Query

  • 조건 다양
  • SQL과 유사하게 복잡도 높은 쿼리 수행

: 연습문제

// OrderRepository
@Query("from Order o left join fetch o.orderItems i left join fetch i.item where o.id =:orderId")
Order findByIdAndOrderItemsAndItem(Long orderId);

QueryDSL

: 코드로 만드는 쿼리

  • 코드로 쿼리를 만드는 빌더 API

: 장점

  • 코드로 작성
  • 컴파일시 오류 확인 가능 (기존의 방법은 실제 코드를 실행해야 알 수 있었음)
  • 동적 쿼리

+. 특히 검색 기능에 유용


미니프로젝트 - 실습

: API 개발 - 사용자 관련 CRUD

  • 사용자 등록 API 개발

API 문서 작성 : REST API에 맞춰서

  • 보통 action을 api 주소에 명시하지 않음

: API 개발 - 사용자 조회(상세) API 개발

  1. 사용자 API
  • 등록/조회(단건)/수정/삭제
  1. 도서 API
  • 도서 목록 조회 - queryDSL
  • 도서 단건 조회
  1. 도서관 목록 API

+ 포트폴리오 TIP

  • 기술 나열보단 '개발 경험'
    • 한가지 스택을 사용하였더라도 내 생각과 경험이 담아야함

  • '나는 같이 일할 수 있는 사람이다'
    • 협업 경험과 스토리도 하나의 중요 포인트

  • '나는 성장하는 사람이다'
    • 포트폴리오 혹은 이력서에 활동 기재시 배운점 잘 정리해두기

  • '나의 강점은 ~이다'
    • 특장점이 아니더라도 내가 생각하는 나의 장점이라도 적기
profile
codestates seb 44th // 다크모드로 보는걸 추천드립니다

0개의 댓글