QueryDSL

두주·2024년 1월 19일
0

TIL

목록 보기
35/58

시작하기

QueryDSL을 의존성에 추가하였다면,
JPAQueryFactory를 빈으로 사용할 수 있도록 설정해 주어야 한다.

abstract class QueryDslSupport {

    @PersistenceContext
    protected lateinit var entityManager: EntityManager

    protected val queryFactory: JPAQueryFactory
        get() {
            return JPAQueryFactory(entityManager)
        }
}

사용하기

기존에는 UserRepository가 JpaRepository를 상속하고 끝이었는데
제법 특이한 구조로 바뀐다.

#CardRepository

interface CardRepository : JpaRepository <CardEntity, Long>, CustomCardRepository {

    fun findByAuthor(author: String) : List<CardEntity>

}
#CustomCardRepository

interface CustomCardRepository {

    fun searchCardListByTitle(title: String) : List<CardEntity>

    fun searchCardListByComplete(isCompleted: Boolean) : List<CardEntity>

    fun findByPageableAndComplete (pageable: Pageable, courseComplete: Complete?): Page<CardEntity>

}

위 코드를 보면 CardRepository가 JpaRepository와 CustomCardRepository를 상속받는 것이 보인다.

왜 이렇게 하는가?

1) CardRepository가 JpaRepository를 그대로 사용하고
2) CustomCardRepository의 내용을 추가로 사용하기 위함이다.

CardRepository에서 CustomCardRepository를 상속받지 않고
그대로 내용만 추가해서 사용하게 된다면

Impl에서 JpaRepository를 싹 다 구현해서 써야되는 참사가 일어난다.

profile
야옹.

0개의 댓글