본문 바로가기
JPA

[JPA]repository interface 설계

by whitedeveloper 2023. 1. 18.

#.Spring Data JPA는 JpaRepository를 기반으로 더욱 쉽게 데이터베이스를 사용할 수 있는 아키텍처를 제공

 

#.스프링 부트로 JpaRepository를 상속하는 인터페이스를 생성하면 기존의 다양한 메서드 활용가능

 

 

#.리포지토리(Repository)

-Spring Data JPA가 제공하는 인터페이스

-엔티티가 생성한 데이터베이스에 접근하는데 사용

-생성을 위해서는 접근하려는 테이블과 매핑되는 엔티티에 대한 인터페이스를 생성하고, JpaRepository를 상속받으면 된다.

public interface ProductRepository extends JpaRepository<Product, Long>{

}

 

#.리포지토리 메서드 생성 규칙

- FindBy : SQL문의 where 절 역할을 수행하는 구문, 뒤에 엔티티의 필드값을 입력해서 사용

findByName(String name)

-AND, OR : 조건을 여러 개 설정하기 위해 사용

findByNameAndEmail(String name, String email)

-Like/NotLike : SQL문의 like와 동일한 기능을 수행하며, 특정 문자를 포함하는지 여부를 조건으로 추가

                        비슷한 키워드로 Containing, Contains, isContaing

findByTitleLike(String title)

-StartsWith/StartingWith : 특정 키워드로 시작하는 문자열 조건을 설정

List<Movie> findByRatingStartsWith(String rating);

-EndsWith/EndingWith : 특정 키워드로 끝나는 문자열 조건을 설정

List<Movie> findByDirectorEndsWith(String director);

-IsNull/IsNotNull : 레코드 값이  Null이거나 Null이 아닌 값을 검색

findByAge(Is)Null
findByAge(Is)NotNull

-True/False : Boolean 타입의 레코드를 검색할 때 사용

findByActiveTrue()  //… where x.active = true
findByActiveFalse()  //… where x.active = false

-LessThan/GreaterThan : 특정 값을 기준으로 대소 비교를 할 때 사용

findByAgeLessThan  //… where x.age < ?1
findByAgeGreaterThan   //… where x.age > ?1

-Between : 두 값 사이의 데이터를 조회

findByStartDateBetween   //… where x.startDate between ?1 and ?2

-OrderBy : SQL 문에서 order by와 동일한 기능을 수행

List<Product> findByNameOrderByPriceAsc(String name); //가격순으로 이름 조회

 

- countBy :SQL 문의 count와 동일한 기능을 수행하며, 결과값의 개수를 추출

'JPA' 카테고리의 다른 글

[JPA]어노테이션  (0) 2023.04.11
[JPA]엔티티 설계  (0) 2023.01.17