티스토리 뷰

QueryDsl이란?

Querydsl은 JPA 기반의 데이터베이스 조회 및 조작을 위한 라이브러리입니다.

복잡한 쿼리(ex 동적 쿼리)를 더 쉬운 작성을 도와줍니다.

CustomRepository

CustomRepository 인터페이스는 Querydsl을 사용하여 데이터베이스 작업을 수행하는 데 도움을 주는 방법 중 하나입니다.

@Repository
interface MenuRepository: JpaRepository<Menu, Long>, CustomMenuRepository


interface CustomMenuRepository {
    fun findByCafeId(cafeId: Long)
}

class CustomMenuRepositoryImpl: CustomMenuRepository {
    override fun findByCafeId(cafeId: Long) {
        TODO("Not yet implemented")
    }
}

Repository 인터페이스에 CustomRepository를 상속받는 이유

이건 매우 일반적이며, Spring Data JPA에서도 이와 유사한 패턴을 권장한다고 합니다.

이러한 방식은 코드의 모듈화, 확장성, 유지보수성을 향상시키기 위해 사용됩니다.

이유 [1]. 단일 책임 원칙을 지킬 수 있다.

Repository 인터페이스는 주로 데이터 엑세스와 관련된 메서드를 정의합니다.

CustomRepository 인터페이스는 특화된 쿼리 로직이나 비즈니스 로직을 정의합니다.

이렇게 분리함으로써 단일 책임 원칙을 준수하며 코드를 더 관리하기 쉽게 만들 수 있습니다.

이유 [2]. 모듈화와 확장성

CustomRepository 인터페이스를 상속받는 구현체를 만들어 사용하면, 원래의 Repository에 존재하지 않는 특화된 메서드를 사용할 수 있습니다.

예시로, 두 개의 엔티티를 조인해서 사용하는 쿼리도 간단하게 구현할 수 있습니다.

또한 다른 CustomRepository 인터페이스를 생성하여 다양한 비즈니스 요구사항에 맞는 메서드를 추가할 수 있습니다.

이유 [3]. 코드 분리와 가독성

CustomRepository 인터페이스는 코드의 목적과 의도를 더 잘 드러내게 도와줍니다.

클라이언트 코드에서는 CustomRepository를 통해 특화된 로직이 어떻게 동작하는지 명확하게 이해할 수 있습니다.

이유 [4]. 컴파일 타임 타입 안정성

CustomRepository 인터페이스를 사용하면 Querydsl 등을 활용하여 타입 안정성을 확보할 수 있습니다.

문자열 기반의 쿼리 생성 대신 메서드를 호출하는 방식을 사용하므로 컴파일 타임에 오류를 찾을 수 있습니다.

결론

요약하면, 코드의 모듈화, 확장성, 유지보수성을 향상시키는 좋은 방법입니다.

이를 통해 코드의 가독성을 높이고 관련 기능들을 적절하게 분리하여 개발과 유지보수를 효율적으로 할 수 있습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함