탑크리에듀(www.topcredu.co.kr) 제공 JPA 강좌! Spring Data JPA에서 사용자 정의 Repository 작성법 입니다. Spring Data JPA가 쿼리 메소드등을 통해 자동으로 쿼리를 만들어 주지만 복잡한 쿼리를 실행하기 위해서는 사용자 정의 Repository를 만들어야 하죠 이 경우 Repository를 직접 구현하면 공통 인터페이스 기능까지 구현해야 되므로 Spring Data JPA에서는 필요한 메소드만 구현할 수 있는 방법을 제공합니다.
2. SPRING DATA JPA 사용자정의 REPOSITORY - 1
Spring Data JPA가 쿼리 메소드등을 통해 자동으로 쿼리를 만들어 주지만 복잡한 쿼리를 실행하기 위해서는 사용자 정의
Repository를 만들어야 한다. 이 경우 Repository를 직접 구현하면 공통 인터페이스 기능까지 구현해야 되므로 Spring
Data JPA에서는 필요한 메소드만 구현할 수 있는 방법을 제공한다.
1. 공통 기능을 위한 JpaRepository를 상속한 EmpRepository가 있으므로 적당히 이름을 부여하여 Repository 인터페이
스를 만든다.
public interface MyEmpRepository {
public List<Emp> getMaxSalEmp();
}
3. SPRING DATA JPA 사용자정의 REPOSITORY - 2
2. 앞페이지 인터페이스의 구현클래스를 작성한다.
이름은 Repository인터페이스 이름 + Impl 형태로 만들면 Spring Data JPA가 자동으로 인식을 한다
(주의 : MyEmpRepositoryImpl(X) )
public class EmpRepositoryImpl
implements MyEmpRepository {
@Override
public List<Emp> getMaxSalEmp() {
}
}
4. SPRING DATA JPA 사용자정의 REPOSITORY - 3
3. 해당 엔티티의 메인 Repository를 만들면서 앞에서 만든 인터페이스를 상속받으면 된다.
public class EmpRepository extends JpaRepository<Emp, Long>, MyEmpRepository
{ }
5. SPRING DATA JPA 사용자정의 REPOSITORY - 4
-. 사용자 정의 인터페이스의 구현 클래스 이름은 반드시 EmpRepositoryImpl로 해야 한다. 이름은 Repository인터페이스이름
+ Impl 형식이다. 만약 이름을 MyEmpRepositoryImpl 형태로 사용하면 “No property queryDSL found emp” 오류가
발생한다.
-. Impl 대신 다른 접미사를 사용하려면 XML기반에서는 다음과 같이 한다.
<repositories base-package=“mypackage.repository” repository-impl-postfix=“able”/>
-. JavaConfig를 사용하면 다음과 같다.
@EnableJpaRepositories(basePackage=“mypackage.repository” RepositoryImplementationPostfix=“able”)
6. PRACTICE MAKES AN EXPERT!
Spring Framework & JPA
Spring Boot, JPA, Querydsl
실무프로젝트과정
JPA,쇼핑몰 프로젝트
실무과정