Repository란?
- 스프링부트에서는 Entity의 기본적인 CRUD가 가능하도록 JpaRepository 인터페이스를 제공함
- JpaRepository 인터페이스를 상속하면 된다. 이때 사용할 Entity와 ID 값이 들어가게 된다 (JpaRepository<T, ID>
// Member Entity의 Repository
public interface MemberRepository extends JpaRepository<Member, Long> {
}
위와 같이 상속 받으면 위의 인터페이스는 다음과 같은 기능을 제공하게 된다.
메서드 기능
save() (저장) | 엔티티를 저장함 |
findOne() (검색) | pk로 레코드를 찾음 |
findAll() (검색) | 전체 레코드 불러오기, 정렬 및 페이징이 가능함 |
count() (검색) | 레코드 갯수 |
delete() (삭제) | 레코드 삭제 |
기본 기능을 제외한 조회 기능을 추가하고 싶으면 규칙에 맞는 추가해야한다.
// Member Entity의 Repository
public interface MemberRepository extends JpaRepository<Member, Long> {
Member findByName(Sring name);
int countByName(String name);
}
규칙에 맞는 쿼리 메서드를 추가해서 스프링에 알릴 수 있다.
메서드의 반환형이 Entity면 하나의 결과만 전달하고, 반환형이 List라면 쿼리에 해당하는 모든 객체를 전달한다.
메서드 예시 기능
findBy~ (검색) | findByName(String name) | 쿼리를 요청하는 메서드 |
countBy~ (검색) | countByName(String name) | 쿼리 결과 레코드 수를 요청하는 메서드 |
And (검색) | findByEmailAndUserId(String email, String userId) | 여러 필드를 and로 검색 |
Or (검색) | findByEmailOrUserId(String email, String userId) | 여러 필드를 or로 검색 |
Between (검색) | findByCreatedAtBetween(Date fromDate, Date toDate) | 필드의 두 값 사이에 있는 항목 검색 |
LessThan (검색) | findByAgeGreaterThanEqual(int age) | 작은 항목 검색 |
GreaterThanEqual (검색) | findByAgeGraterThanEqual(int age) | 크거나 같은 항목 검색 |
Like (검색) | findByNameLike(String name) | like 검색 |
isNull (검색) | findByJobIsNull() | null인 항목 검색 |
In (검색) | findByJob(String …jobs) | 여러 값중에 하나인 항목 검색 |
OrderBy (검색) | findByEmailOrderByNameAsc(String email) | 검색 결과를 정렬하여 전달 |
위의 자료를 참고하면 더 많은 메서드를 알 수 있다.
참고 링크
'Spring > JPA' 카테고리의 다른 글
좋은 Entity 설계하는 방법들 (0) | 2022.07.25 |
---|---|
JPA 소개, 특징, 장점 및 단점 (0) | 2022.07.19 |