Repository는 entity에 의해 생성된 db에 접근하는 메서드들을 사용하기 위한 인터페이스 이다.
스프링부트에서는 Entity의 기본적인 CRUD가 가능하도록 JpaRepository 인터페이스를 제공한다.
method key word | sample | 설명 |
---|---|---|
And | findByEmailAndUserId(String email, String userId) | 여러필드를 and 로 검색 |
Or | findByEmailOrUserId(String email, String userId) | 여러필드를 or 로 검색 |
Between | findByCreatedAtBetween(Date fromDate, Date toDate) | 필드의 두 값 사이에 있는 항목 검색 |
LessThan | findByAgeGraterThanEqual(int age) | 작은 항목 검색 |
GreaterThanEqual | findByAgeGraterThanEqual(int age) | 크거나 같은 항목 검색 |
like | findByNameLike(String name) | like 검색 |
IsNull | findByJobIsNull() | null 인 항목 검색 |
In | findByJob(String … jobs) | 여러 값중에 하나인 항목 검색 |
OrderBy | findByEmailOrderByNameAsc(String email) | 검색 결과를 정렬하여 전달 |
method | 설명 |
---|---|
long count | 사용가능한 엔티티 수를 반환 한다. |
void delete | 주언진 엔티티를 삭제한다. |
void deleteAll | 저장소에서 관리하는 모든 엔티티를 삭제한다. |
void deleteById | 주어진 ID를 가진 엔티티를 삭제한다. |
lterabel findAll | T 타입의 모든 인스턴스를 반환한다. |
Optional findById | ID로 엔티티를 검색한다. |
S save | 주어진 엔티티를 저장한다. |
boolean existsById(ID id) | 주어진 ID를 가진 엔티티가 존재하는 지 여부를 반환한다. |
Repository상속 관계는 위그림과 같으며 스프링에서 JpaRepository<>를 상속함으로써 @Transactional 어노테이션을 생략하고 사용할수 있게 된다.
실제 JpaRepository의 메소드들은
다음과 같이 제네릭으로 구현되어 있다. 이를 이용해 위에서 서술한 키워드 규칙으로 여러 쿼리들을 커스텀하여 사용할수 있다.
좀 더 자세한 키워드와 쿼리를 보고 싶다면 JPA 레퍼런스를 참고하면 된다.