Server/Spring

QueryDSL - Repository 구조잡기 (extends / implements 사용 X)

JaeHoney 2022. 5. 29. 12:51
반응형

해당 포스팅은 "[우아콘2020] 수십억건에서 QUERYDSL 사용하기" 라는 영상의 내용을 정리한 글입니다. 해당 영상은 아래 Reference에서 시청할 수 있습니다.

- https://www.youtube.com/watch?v=zMAX7g6rO_Y 

extends / implements 사용하지 않기

현업에서 JPA & QueryDSL-JPA를 많이 사용한다.

 

Repository를 구현할 떄는 다음의 같은 구조로 구현할 수 있다.

사용할 Repository가 JpaRepository를 상속받고 RepositoryCustom이라는 별도의 인터페이스를 추가적으로 상속을 받는다. 그리고 해당 인터페이스의 구현체인 RepositoryImpl을 생성하게 된다.

 

해당 방법은 매번 Interface와 Impl 구조를 만들면서  의미없는 반복이 지속되기 때문에 일반적으로는 아래와 같이 QuerydslRepositorySupport를 상속하여 구조를 단순화 시킨다.

하지만 이것 역시 생성자에 엔터티를 매번 등록을 해야 한다.

 

꼭 무언가를 상속/구현 받지 않더라도, 꼭 특정 Entity를 지정하지 않더라도 Querydsl을 사용할 수 있는 방법은 없을까?

JPAQueryFactory만 있으면 Querydsl은 사용할 수 있다. 그래서 JPAQueryFactory만 의존성 주입을 받고 불필요한 extends/implements 구조를 다 제거해도 된다.

 


Reference

[우아콘2020] 수십억건에서 QUERYDSL 사용하기

- https://www.youtube.com/watch?v=zMAX7g6rO_Y 

 

반응형