TIL

TIL_20230711

번잔중 2023. 7. 11. 23:12

📝 하루 요약

프로그래머스 문제를 시원하게 제치고 공모전 회의 전에 멘토 필터링 기능을 만들었습니다.

✅ 오늘 할 일

  • 프로그래머스 문제 풀기
  • 공모전 회의
  • 공모전 - Specification을 사용한 멘토 필터링 기능 구현

🧐 오늘 배운 것

프로그래머스 문제 풀기

  • 회의와 기능 구현때문에 미뤘습니다. ㅠㅠ

공모전 회의

  • 기능 관련 수정사항이 많아지면서 다른 기능을 개발하지 못하는 점을 고려하여 기간을 더 쪼개기로 했습니다.
  • 지원서에 들어가야 할 필수 기능을 우선적으로 개발하고, 1차 발표(2023-08-04) 이후에 일정을 다시 조정하기로 했습니다.
  • 메인 페이지
    • 추천 멘토
    • 멘토 리스트
  • 멘토 프로필 페이지

공모전 - Specification을 사용한 멘토 필터링 기능 구현

  • 우선 JPA Criteria API를 사용하여 Specification을 생성해주었습니다.
  • 해당 방식 선택의 이유
    1. 조회나 필터링을 할 때, JPA에서 제공하는 기존 findAll() 메서드를 사용하지 않기 위해서 선택
    2. 동적 쿼리를 처리하기 위해서 선택
  • Specification을 사용해서 JPA의 findAll()보다 훨씬 빠르고, Repository에서 Pagenation을 할 수 있고, 서비스 로직이 간단해졌지만 몇 가지의 단점이 생겼습니다.
    1. 코드가 SQL 같지 않다.
    2. 동적 쿼리의 생성 방식이 복잡하고, 번거롭다.
  • 그래서 QueryDSL과 JPQLQuery를 사용해서 구현한 부분을 내일 고쳐보겠습니다.

💡 느낀점

  • 동적 쿼리를 작성하는데에 있어서 아주 많은 방법이 있고, 왜 요즘 서비스에서 Specification의 사용이 드문지를 알게 되었습니다. 학습 및 시행착오의 한 과정이라 생각하고 하나씩 더 나아질 수 있도록 구현해보겠습니다.

📢 내일 할 일

  • 프로그래머스 문제 풀기
  • 공모전 - QueryDSL 및 JPQLQuery를 사용한 멘토 필터링 기능 구현
  • 운동하기 - 웨이트 트레이닝