더북(TheBook)

더 많은 메서드가 필요하다면 스프링 데이터 리포지터리 인터페이스(repository interface)와 기본 명명 규칙을 사용해서 추가 메서드를 구현할 수 있다. 스프링은 시작할 때 리포지터리 인터페이스의 메서드 이름을 구문 분석(parse)하고 메서드 이름을 기반으로 SQL 문으로 변환한 후 내부적으로 작업을 수행할 동적 프록시 클래스를 생성한다. 라이선싱 서비스의 Repository는 다음 코드에서 볼 수 있다.

코드 5-9 쿼리 메서드가 정의된 LicenseRepository 인터페이스

package com.optimagrowth.license.repository;

import java.util.List;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

import com.optimagrowth.license.model.License;

@Repository 
public interface LicenseRepository extends CrudRepository<License,String>  { 
    public List<License> findByOrganizationId(String organizationId); 
    public License findByOrganizationIdAndLicenseId
            (String organizationId, String licenseId);
}

➊ JPA 리포지터리 인터페이스라고 스프링 부트에 알린다. CrudRepository를 확장한다면 이 애너테이션은 선택적(optional)이다.

➋ 스프링 CrudRepository를 확장한다.

➌ 쿼리 메서드를 ‘SELECT ... FROM’ 쿼리로 구문 분석한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.