사용자 정의 리포지토리

박찬우·2024년 1월 11일

스프링 데이터 JPA

목록 보기
10/18

사용자 정의 리포지토리

  • 규칙: 리포지토리 인터페이스 이름 + Impl
  • 스프링 데이터 JPA가 인식해서 스프링 빈으로 등록
  • 실무에서는 주로 QueryDSL이나 SpringJdbcTemplate을 함께 사용할 때 사용자 정의 리포지토리 기능 자주 사용
public interface MemberRepositoryCustom {
    List<Member> findMemberCustom();
}
@RequiredArgsConstructor
public class MemberRepositoryImpl implements MemberRepositoryCustom{

    private final EntityManager em;

    @Override
    public List<Member> findMemberCustom() {
        return em.createQuery("select m from Member m", Member.class).getResultList();
    }
}
public interface MemberRepository extends JpaRepository<Member, Long>, MemberRepositoryCustom {}
Member user1 = memberRepository.save(new Member("user1", 10));
em.persist(user1);
em.flush();
em.clear();

List<Member> result = memberRepository.findMemberCustom();

Assertions.assertThat(result.size()).isEqualTo(1);
  • 스프링 데이터 2.x 부터는 커스텀인터페이스 명 + Impl
public class MemberRepositoryCustomImpl implements MemberRepositoryCustom {}
profile
진짜 개발자가 되어보자

0개의 댓글