
사용자 정의 리포지토리
- 규칙: 리포지토리 인터페이스 이름 +
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 {}