일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- JPA프록시
- 임베디드타입
- 자바제너릭
- 데이터베이트h2
- JPA Hint & Lock
- embededtype
- 스프링부트
- Git
- springboot기본설정
- sql
- JPA값타입
- spring
- Open EntityManager
- MySqlType
- OSIV
- javageneric
- 에이치투데이터베이스
- JPAmapping
- springbootH2
- JPAproxy
- 스프링부트기본설정
- 제이피큐엘쿼리
- springbootproxy
- jpa
- gitinitial
- 이해와 원리
- dockercmd
- JDBC connection pool
- jpqlquery
- httppie
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 |