repository, repositoryCustom, repositoryImpl

Haechan Kim·2024년 2월 16일
0

Spring

목록 보기
58/68
post-custom-banner

repository, repositoryCustom, repositoryImpl 구조

하나의 리포지토리로 JpaRepository, QueryDSL 기능 모두 사용할 수 있음.

  • ExRepository (interface) : JpaRepository 기능, Custom도 extend
  • ExRepositoryCustom (interface) : ExRepositoryImpl extend
  • ExRepositoryImpl (class) : QueryDSL 기능, 구현체

네이밍 지켜야 함.


// ExRepository
public interface RevenueRepository extends JpaRepository<Revenue, Long>, RevenueRepositoryCustom {
}

// ExRepositoryCustom
public interface RevenueRepositoryCustom {
    List<Revenue> findByDate(LocalDate date);
}

// ExRepositoryImpl
@Repository
@RequiredArgsConstructor
public class RevenueRepositoryImpl implements RevenueRepositoryCustom {
    private final JPAQueryFactory query;
    @Override
    public List<Revenue> findByDate(LocalDate date) {
        return query.select(revenue)
                .from(revenue)
                .where(revenue.date.year().eq(date.getYear()))
                .where(revenue.date.month().eq(date.getMonthValue()))
                .fetch();
    }
}
post-custom-banner

0개의 댓글