본문 바로가기

Java/[패스트캠퍼스] 50일 포트폴리오 챌린지

[23일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring)

수강 강의명
수강 강의명

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 에러가 출력된다.

 

수강 화면수강 화면
수강 화면

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/43z0P6S

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완