Programming/Spring
[JPA] Entity와 Repository의 관계, Repository의 기본 메서드/추가 메서드
사랑우주인
2021. 2. 5. 00:56
Entity클래스를 작성했다면 Repository 인터페이스를 만들어야 한다.
스프링부트에서는 Entity의 기본적인 CRUD가 가능하도록 JpaRepository 인터페이스를 제공한다.
public interface MemberRepository extends JpaRepository<Member, Long> {
}
Spring Data JPA에서 제공하는 JpaRepository 인터페이스를 상속하기만 해도 되며, 인터페이스에 따로 @Repository등의 어노테이션을 추가할 필요가 없다.
JpaRepository를 상속받을 때는 사용될 Entity 클래스와 ID 값이 들어가게 된다. 즉, JpaRepository<T, ID> 가 된다.
Repository의 기본 메서드 / 추가 메서드
| 기본 제공 메서드 | 기능 |
| save() | 레코드 저장 (insert, update) |
| findOne() | primary key로 레코드 한건 찾기 |
| findAll() | 전체 레코드 불러오기. 정렬(sort), 페이징(pageable) 가능 |
| count() | 레코드 갯수 |
| delete() | 레코드 삭제 |
위와 같이 Query 메소드를 추가하여 스프링에게 알릴 수 있다.
그러기위해서는 규칙에 맞는 메서드를 작성해야 하는데, 그 규칙은 다음과 같다.
| 추가 기능 메서드 | 기능 |
| findBy로 시작 | 쿼리를 요청하는 메서드 임을 알림 |
| countBy로 시작 | 쿼리 결과 레코드 수를 요청하는 메서드 임을 알림 |

위의 findBy에 이어 해당 Entity 필드 이름을 입력하면 검색 쿼리를 실행한 결과를 전달한다.
SQL의 where절을 메서드 이름을 통해 전달한다고 생각하면 된다.