본문 바로가기

Web

맨땅에 JPA - QueryDSL Database 조작2

728x90
반응형

자 이제 이어서 앞서 얘기한 QueryDSL을 위한 Interface 및 구현 클래스를 만들어보자.

 

이전 포스트를 못 본 사람이라면

https://thecardeveloper.tistory.com/30

 

맨땅에 JPA - QueryDSL Database 조작1

이번 포스트에선 앞선 두 포스트로 만들어진 QClass를 사용하여 Database를 조작을 준비해 보겠다. (여기서 조작은 쉽게 CRUD를 얘기한다.) 우선 Entity와 QClass까지 생성이 됐다면 이번엔 Repository를 생

thecardeveloper.tistory.com

 

앞서 그린 그림을 보면

잘 그린 거 같아서 또 가져왔다

우리가 지금 해야할 작업은 CommonCodeQueryRepository라는 Interface를 생성해야한다.

(애초에 Entity 이름을 좀 짧게 작성했으면 더 편했을 텐데...)

 

CommonCodeQueryRepository

본인이 생성한 CommonCodeQueryRepository이다.

Interface를 생성하고 필요한 메소드를 선언하면 되는데 우선 가볍게 select 할 수 있는 searchCode라는 메소드를 선언했다.

 

그럼 이제 searchCode를 구현할 클래스를 생성하고 구현해 보자.

CommonCodeQueryRepositoryImpl

  • 구현할 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 InterfaceCommonCodeRepository에서 extends 해주면 

우리가 만든 searchCode 메소드를 CommonCodeRepository만 주입해도 사용할 수 있는 것이다.

 

 

이렇게 하면 Service 단에서 CommonCodeRepository만 주입해 주면 JpaRepository에서 제공하는 기본 메소드와

우리가 구현한 searchCode 메소드 모두 CommoncodeRepository만으로 사용할 수 있게 된다.

 

또 다른 원하는 메소드가 있다면 CommonCodeQueryRepository에 선언하고 CommonCodeQueryRepositoryImpl에서 구현하여 사용하면 된다.

 

JPA와 QueryDSL을 이용하여 Database를 조작하는 큰 흐름은 이렇게 진행된다.

 

앞으로 작성할 포스트에서는 세세한 메소드 사용 방법 및 새로운 기능들을 알아보겠다.

#어렵다

 

728x90
반응형