자 이제 이어서 앞서 얘기한 QueryDSL을 위한 Interface 및 구현 클래스를 만들어보자.
이전 포스트를 못 본 사람이라면
https://thecardeveloper.tistory.com/30
맨땅에 JPA - QueryDSL Database 조작1
이번 포스트에선 앞선 두 포스트로 만들어진 QClass를 사용하여 Database를 조작을 준비해 보겠다. (여기서 조작은 쉽게 CRUD를 얘기한다.) 우선 Entity와 QClass까지 생성이 됐다면 이번엔 Repository를 생
thecardeveloper.tistory.com
앞서 그린 그림을 보면
우리가 지금 해야할 작업은 CommonCodeQueryRepository라는 Interface를 생성해야한다.
(애초에 Entity 이름을 좀 짧게 작성했으면 더 편했을 텐데...)
본인이 생성한 CommonCodeQueryRepository이다.
Interface를 생성하고 필요한 메소드를 선언하면 되는데 우선 가볍게 select 할 수 있는 searchCode라는 메소드를 선언했다.
그럼 이제 searchCode를 구현할 클래스를 생성하고 구현해 보자.
- 구현할 Interface CommonCodeQueryRepository implements
- QueryDSL 사용을 위한 JPAQueryFactory 주입
- Interface에서 선언한 searchCode Override
위 searchCode 메소드는 CommonCode Entity에서 정의한 Database 테이블에서 모든 데이터를 조회하는 메소드이다.
(select * from common_code; 와 같은 동작이다.)
하나의 CommonCode Entity가 common_code 테이블의 하나의 row인 것이다.
그런데 우린 모든 row를 조회하니깐 List에 담아서 return 해주는 것이다.
그럼 이제 CommonCodeQueryRepository Interface를 CommonCodeRepository에서 extends 해주면
우리가 만든 searchCode 메소드를 CommonCodeRepository만 주입해도 사용할 수 있는 것이다.
이렇게 하면 Service 단에서 CommonCodeRepository만 주입해 주면 JpaRepository에서 제공하는 기본 메소드와
우리가 구현한 searchCode 메소드 모두 CommoncodeRepository만으로 사용할 수 있게 된다.
또 다른 원하는 메소드가 있다면 CommonCodeQueryRepository에 선언하고 CommonCodeQueryRepositoryImpl에서 구현하여 사용하면 된다.
JPA와 QueryDSL을 이용하여 Database를 조작하는 큰 흐름은 이렇게 진행된다.
앞으로 작성할 포스트에서는 세세한 메소드 사용 방법 및 새로운 기능들을 알아보겠다.
#어렵다
'Web' 카테고리의 다른 글
맨땅에 JPA - QueryDSL Database 조작1 (0) | 2023.07.07 |
---|---|
맨땅에 JPA - Entity와 QClass (0) | 2023.07.07 |
맨땅에 JPA - 설정 (0) | 2023.07.07 |
JavaMailSender란 녀석을 만났다. (0) | 2023.06.19 |
IntelliJ 로컬서버와 실제 운영서버 소스코드 비교/수정/반영(Deployment) (0) | 2023.02.22 |