백엔드/JPA

스프링 데이터 jpa 사용자 정의 repository 구현

김어찐 2021. 10. 23. 18:03
728x90

사용자 정의 인터페이스 구현

package com.study.datajpa.repository;

import com.study.datajpa.entity.Member;

import java.util.List;


public interface MemberRepositoryCustom {
    List<Member> findMemberCustom();
}

사용자 정의 인터페이스 구현체

상속해줄려는 스프링 데이터 jpa 인터페이스명 + "Impl", 부모 인터페이스 명은 상관없음, 구현체명이 중요!

package com.study.datajpa.repository;

import com.study.datajpa.entity.Member;
import lombok.RequiredArgsConstructor;

import javax.persistence.EntityManager;
import java.util.List;

@RequiredArgsConstructor
// 상속해줄려는 스프링 데이터 jpa 인터페이스명 + "Impl", 부모 인터페이스 명은 상관없음, 구현체명이 중요!
public class MemberRepositoryImpl implements MemberRepositoryCustom {

    private final EntityManager em;

    @Override
    public List<Member> findMemberCustom() {
        return em.createQuery("select m from Member m")
                .getResultList();
    }
}

스프링 데이터 jpa 인터페이스에 사용자 정의 "인터페이스" 상속

public interface MemberRepository extends JpaRepository<Member, Long> ,MemberRepositoryCustom{
}
728x90