Spring | JpaRepository 이용 | JpaRepository에 메소드 추가


데이터베이스의 핵심이 되는 것은 뭐니 뭐니해도 “검색"이다. 필요에 따라 데이터를 범위를 지정하여 검색이 가능할 수 있어야 데이터베이스의 위력을 발휘할 수 있다.

그런데 JpaRepository에는 검색 관련 메소드는 “findAll"밖에 없다. 이걸로는 사용을 할 수 없다라고 생각했을지도 모르겠다. 하지만 실은 JpaRepository의 진정한 위력은 검색에 있는 것이다. 인터페이스에 검색을 위한 메소드를 추가하는 것으로, 필요한 검색 메소드를 늘릴 수 있다.

실제로 해보자. 아래를 참고하여 SampleEntityRepository 인터페이스를 수정하자.

package com.devkuma.spring.db;
 
import java.util.List;
 
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
 
@Repository
public interface SampleEntityRepository
        extends JpaRepository<SampleEntity, Long> {
 
    public List<SampleEntity> findByNameLike(String name);
    public List<SampleEntity> findByMailEndingWith(String mail);
}

여기에서는 다음의 두 문장을 추가되었다.

public List <SampleEntity> findByNameLike(String name);
public List <SampleEntity> findByMailEndingWith(String mail);

첫 번째 “findByNameLike"는 name의 값을 사용하여 like 검색하기 위한 것이다. 두 번째 “findByMailendingWith"는 mail 값이 지정된 텍스트로 끝나는 엔티티를 검색한다.

그저 메소드 선언문을 작성했을 뿐이지만, 주의해야 하는 것은 메소드 이름입니다. 이것은 마음대로 변경하거나 하지 말아야 한다. 반드시 여기에 올린 이름대로 메소드 선언을 작성하자. 이런 메소드 이름에는 의미가 있다. 변경하면 잘 작동하지 않는다.