QueryDSL을 사용할 수 있는 환경을 구성한다.
QueryDSL을 이용하여 API 검색 옵션을 추가한다.
QueryDSL 설정
Maven 빌드 도구(업데이트 활발), Gradle 빌드 도구(상대적으로 업데이트 느림)
① 프로젝트에 의존성을 추가한다.
★ 핵심 : querydsl-jpa, querydsl-core, querydsl-collections, querydsl-apt
querydsl-collections : QueryDSL에서 제공하는 기능들을 모두 포함시키기 위함.
querydsl-apt : 형태가 독특하기 때문에 spring.dependency-management에 의해 관리가 되지 않는다.
버전을 생략할 수 없으므로 버전을 직접 작성해야 한다.
// queryDSL 설정 implementation "com.querydsl:querydsl-jpa" implementation "com.querydsl:querydsl-core" implementation "com.querydsl:querydsl-collections" annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" // querydsl JPAAnnotationProcessor 사용 지정 annotationProcessor "jakarta.annotation:jakarta.annotation-api" // java.lang.NoClassDefFoundError (javax.annotation.Generated) 대응 코드 annotationProcessor "jakarta.persistence:jakarta.persistence-api" // java.lang.NoClassDefFoundError (javax.annotation.Entity) 대응 코드
추가적인 설정
① 문자열 변수에 큐 클래스를 생성할 파일 경로를 담는다.
큐 클래스의 위치를 옮김으로써 Gradle 빌드 동작과 IDE가 빌드할 때의 동작이 같아지게 된다.
② QueryDSL의 QClass 파일 생성 위치를 지정한다.
③ java source set에 queryDSL의 QClass 위치를 등록한다.
④ Gradle를 clean할 때, QClass 디렉토리를 삭제한다.(빌드할 때 사용하던 잔여물을 제거하기 위함)
⑤ QClass는 구현한 코드가 아닌 자동 생성 클래스이므로 .gitignore파일에 해당 경로를 추가한다.
게시글 : 검색 기능 구현
① 게시글, 댓글 Repository : QuerydslPredicateExecutor, QuerydslBinderCustomizer를 상속받는다.
QuerydslPredicateExecutor<{Entity}> : 모든 필드에 대한 기본 검색 기능을 추가한다(정확히 일치해야 함).
QuerydslBinderCustomizer<{QClass}> : 추가적인 검색 기능을 구현할 때 사용한다.
② QuerydslBinderCustomizer.customize()를 interface 내에서 default 메서드로 직접 구현한다.
검색에 대한 세부적인 규칙을 재구성 한다(원하는 필드만 검색, 부분 검색).
③ HAL Explorer의 Edit Headers에 파라미터를 입력하여 해당 필드의 부분 검색이 잘 동작하는지 확인한다.
게시글 : 뷰 테스트 작성
① 프로젝트에 thymeleaf 의존성을 추가한다.
Spring initializr > Project : Gradle Project > ADD DEPENDENCIES... > 검색 : thymeleaf > EXPLORE > implementation 복사 + 붙여넣기
② controller 패키지를 생성한 다음 게시글, 댓글 Controller를 생성한다.
③ Controller에 대한 테스트 코드를 작성한다.
Controller에서 테스트 코드를 생성하는 방법(Create New Test...) : Ctrl + Shift + T
게시글 : 게시글 리스트 - 정상 호출
게시글 : 게시글 상세 페이지 - 정상 호출
게시글 : 게시글 검색 페이지 - 정상 호출
게시글 : 게시글 해시태그 검색 페이지 - 정상 호출
④ 테스트를 실행한다. 해당 내용을 아직 구현하지 않았기 때문에 404 에러가 출력된다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
'Java > [패스트캠퍼스] 50일 포트폴리오 챌린지' 카테고리의 다른 글
[25일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) (0) | 2023.09.01 |
---|---|
[24일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) (0) | 2023.08.31 |
[22일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) (0) | 2023.08.29 |
[21일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) (0) | 2023.08.28 |
[20일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) (0) | 2023.08.27 |