일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- dockercmd
- 에이치투데이터베이스
- embededtype
- JPAmapping
- 임베디드타입
- JPA Hint & Lock
- Open EntityManager
- JPA프록시
- MySqlType
- 이해와 원리
- 제이피큐엘쿼리
- 스프링부트기본설정
- springbootH2
- Git
- gitinitial
- springbootproxy
- springboot기본설정
- javageneric
- 스프링부트
- jpa
- JPA값타입
- JDBC connection pool
- jpqlquery
- OSIV
- sql
- httppie
- 데이터베이트h2
- 자바제너릭
- spring
- JPAproxy
Archives
- Today
- Total
빡코
[스프링 데이터 JPA] 사용자 정의 리포지토리 구현 본문
1. 사용자 정의 인터페이스 생성
public interface MemberRepositoryCustom {
List<Member> findMemberCustom();
}
2. 사용자 정의 인터페이스를 구현할 구현 클래스 생성
@RequiredArgsConstructor
public class MemberRepositoryImpl implements MemberRepositoryCustom {
private final EntityManager em;
@Override
public List<Member> findMemberCustom() {
return em.createQuery("select m from Member m")
.getResultList();
}
}
* 사용자 정의 리포지토리 구현시, 구현 클래스 명명 규칙
JpaRepository 인터페이스를 구현한 메인 repository 클래스 이름 + Impl
3. 기존 리포지토리에서 사용자 정의 인터페이스 상속
public interface MemberRepository extends JpaRepository<Member, Long>, MemberRepositoryCustom {
}
4.테스트 클래스
@Test
public void callCustom(){
List<Member> result = memberRepository.findMemberCustom();
}
또 다른 방법 ?
항상 사용자정의리포지토리가 필요한 것은 아니다. 그냥 임의의 리포지토리를 만들어도 된다. 예를 들어 MemberQueryRepository를 인터페이스가 아닌 클래스로 만들고 스프링빈으로 등록해서 그냥 직접 사용해도 된다. 물론 이경우 스프링데이터 JPA와는 아무런 관계없이 별도로 동작한다
일반 Repository 클래스 생성
@Repository
@RequiredArgsConstructor
public class MemberQueryRepository {
private final EntityManager em;
List<Member> findAllMembers() {
return em.createQuery("select m from Member m")
.getResultList();
}
}
구현 클래스에 주입 받아 사용
@Rollback(value = false)
class MemberRepositoryTest {
@Autowired MemberQueryRepository memberQueryRepository;
}
'Java > JPA' 카테고리의 다른 글
[스프링데이터 JPA] Web 확장 - 도메인클래스컨버터, 페이징과 정렬 (0) | 2023.05.12 |
---|---|
[스프링데이터 JPA] Auditing (0) | 2023.05.11 |
[스프링 데이터 JPA] JPA Hint & Lock (0) | 2023.05.11 |
[스프링 데이터 JPA] fetchJoin과 EntityGrap (0) | 2023.05.11 |
[스프링 데이터 JPA] 벌크성 수정 쿼리 (0) | 2023.05.11 |