[JPA] Entity와 Repository의 관계, Repository의 기본 메서드/추가 메서드
Entity와 Repository의 관계
Entity클래스를 작성했다면 Repository 인터페이스를 만들어야 한다.
스프링부트에서는 Entity의 기본적인 CRUD가 가능하도록 JpaRepository 인터페이스를 제공한다.
1
2
3
|
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절을 메서드 이름을 통해 전달한다고 생각하면 된다.
'◽ JDBC > JPA & Hibernate' 카테고리의 다른 글
[JPA - Querydsl] BooleanBuilder란 무엇인가? ( 동적쿼리, 정적쿼리 ) (0) | 2019.10.29 |
---|---|
[이슈, Spring(JPA) - 어노테이션(Annotation)] @Setter을 쓰지 않는 이유 (0) | 2019.10.21 |
[이슈, spring - jpa] rest api의 통신방법 통일or다중화하기. (0) | 2019.10.21 |
[Spring(JPA) - 어노테이션(Annotation) ] @DynamicUpdate (0) | 2019.10.21 |
[JPA] 데이터베이스 스키마 생성(자동) 설정 - (데이터베이스 만들기(인식)) (0) | 2019.10.18 |
[Spring(JPA) - 어노테이션(Annotation) ] @Entity // @Table // @Id // @Column (0) | 2019.10.18 |
[JPA] JPA, Hibernate, Repository 비교 정리 (0) | 2019.10.11 |