TIL

TIL_20230712

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

📝 하루 요약

운동하고 버거킹에서 햄버거를 해치운 뒤, 필터링 기능을 수정하고! 프로그래머스 문제를 풀었습니다.

✅ 오늘 할 일

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

🧐 오늘 배운 것

프로그래머스 문제 풀기

공모전 - 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 처럼 인텔리제이에서 인식이 안됐습니다.
    1. IntelliJ에서 프로젝트를 엽니다.
    2. File > Project Structure를 선택합니다.
    3. Modules 탭을 클릭합니다.
    4. 생성된 Querydsl 소스 코드가 있는 디렉토리(기본적으로 src/main/generated라는 이름의 디렉토리에 생성됩니다)를 찾아 선택합니다.
    5. 그 디렉토리를 Sources로 표시합니다. 이렇게 하면 IntelliJ가 이 디렉토리를 소스 코드 디렉토리로 인식하게 됩니다.
    6. Apply를 클릭하고 설정 창을 닫습니다.
  • QueryDSL을 사용해서 동적 쿼리를 설정해주고, JPQLQuery를 사용해서 Projections.bean을 통해 Dto에 맞는 데이터를 페이지네이션했습니다.
  • Projections.bean이나 constructor 등 목적에 따라 다양하게 Dto에 맞춰서 select 문을 리턴해줄 수 있다는 것이 큰 장점이네요.
  • 근데 구현하고 보니 JPQLQuery를 굳이 사용했어야 했나 싶네요...? QueryDSL을 완전히 활용하지는 못한 것 같습니다. 리팩토링할 수 있을 때 꼭 하고 넘어가겠습니다.

운동하기 - 웨이트 트레이닝

29일차!

💡 느낀점

  • 새로운 것을 사용할 때마다 먼 길을 돌아가는 경우가 많은 편인데, 이 과정이 점점 줄어들었으면 좋겠습니다. 제 욕심이겠지만 ㅎㅎㅎ

📢 내일 할 일

  • 프로그래머스 문제 풀기
  • 공모전 - 프로필 이미지 등록 기능 구현
  • 운동하기 - 웨이트 트레이닝