본문 바로가기
Spring

Spring Day 27 : Repository 기능 제한

by 우 석 2024. 3. 5.

JpaRepository 에서 사용할 메서드 제한하기

JpaRepository 는 기본적으로 모든 기능을 제공하기 때문에 리스크가 있을 수 있다.

예를 들어  Optional<User> findByPassword(String password);  메서드처럼 user의 password를 조회하는 기능을 제한할 필요가 있다.

 

@RepositoryDefinition (실용적인 관점에서 사용)

@RepositoryDefinition 어노테이션을 붙이면 BeanDefinition 에 직접 접근하여 프로그래밍으로 주입받을 구현체 메서드들을 지정해서 요청할 수 있다.

@RepositoryDefinition(domainClass = User.class, idClass = Long.class)
public interface UserRepository {

    Optional<User> findByEmail(String email);
    Optional<User> findById(Long id);
 }


@RepositoryDefinition는 특정 리포지토리 하나만 편리하게 사용할 목적으로,
Repository.class는 @NoRepositoryBean을 활용해서 여러 곳에서 사용할 목적으로 사용할 수 있다.