TIL
TIL_20230712
번잔중
2023. 7. 12. 23:28
📝 하루 요약
운동하고 버거킹에서 햄버거를 해치운 뒤, 필터링 기능을 수정하고! 프로그래머스 문제를 풀었습니다.
✅ 오늘 할 일
- 프로그래머스 문제 풀기
- 공모전 - QueryDSL 및 JPQLQuery를 사용한 멘토 필터링 기능 구현
- 운동하기 - 웨이트 트레이닝
🧐 오늘 배운 것
프로그래머스 문제 풀기
- 코드는 github repository에 있습니다. (https://github.com/chaning49/Algorithm)
- Lv 1. 추억 점수
- Lv 1. [1차] 다트 게임
공모전 - QueryDSL 및 JPQLQuery를 사용한 멘토 필터링 기능 구현
- QueryDSL을 설정만 하는데 오-랜 시간을 소요했습니다. ㅎㅎ... 한번 보실래요?
- Gradle 환경 기준 - build.gradle
plugins {
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}
dependencies {
// ...
implementation 'com.querydsl:querydsl-jpa:5.0.0'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0'
}
def querydslSrcDir = 'src/main/generated' // 해당 경로에 QueryDSL 파일 생성
querydsl {
jpa = true
querydslSourcesDir = querydslSrcDir
}
sourceSets {
main.java.srcDir querydslSrcDir
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
- 설정을 하고 나서 QEntity 형태로 클래스가 생성되는데, 제대로 동작하지 않아서 방법을 찾아보고 고쳤습니다! QMember cannot resolve symbol 처럼 인텔리제이에서 인식이 안됐습니다.
- IntelliJ에서 프로젝트를 엽니다.
- File > Project Structure를 선택합니다.
- Modules 탭을 클릭합니다.
- 생성된 Querydsl 소스 코드가 있는 디렉토리(기본적으로 src/main/generated라는 이름의 디렉토리에 생성됩니다)를 찾아 선택합니다.
- 그 디렉토리를 Sources로 표시합니다. 이렇게 하면 IntelliJ가 이 디렉토리를 소스 코드 디렉토리로 인식하게 됩니다.
- Apply를 클릭하고 설정 창을 닫습니다.
- QueryDSL을 사용해서 동적 쿼리를 설정해주고, JPQLQuery를 사용해서 Projections.bean을 통해 Dto에 맞는 데이터를 페이지네이션했습니다.
- Projections.bean이나 constructor 등 목적에 따라 다양하게 Dto에 맞춰서 select 문을 리턴해줄 수 있다는 것이 큰 장점이네요.
- 근데 구현하고 보니 JPQLQuery를 굳이 사용했어야 했나 싶네요...? QueryDSL을 완전히 활용하지는 못한 것 같습니다. 리팩토링할 수 있을 때 꼭 하고 넘어가겠습니다.
운동하기 - 웨이트 트레이닝
💡 느낀점
- 새로운 것을 사용할 때마다 먼 길을 돌아가는 경우가 많은 편인데, 이 과정이 점점 줄어들었으면 좋겠습니다. 제 욕심이겠지만 ㅎㅎㅎ
📢 내일 할 일
- 프로그래머스 문제 풀기
- 공모전 - 프로필 이미지 등록 기능 구현
- 운동하기 - 웨이트 트레이닝