기본 CRUD
- 저장
- 변경 > 변경감지 사용(dirty check)
- 삭제
- 전체 조회
- 단건 조회
- 카운트
JPA의 수정은 변경 감지 기능을 사용한다.
트랜잭션 안에서 엔티티를 조회한 다음 데이터를 변경하면, 트랜잭션 종료 시점에 변경감지 기능이 작동해 변경된 엔티티를 감지하고 UPDATE SQL을 실행
org.springframework.data.repository.Repository
를 구현한 클래스는 스캔 대상 ➡️ MemberRepository 인터페이스가 동작한 이유임
@Repotiroty
애노테이션 생략 가능
: 순수 JPA로 구현한 MemberJpaRepository 대신 스프링 데이터 JPA가 제공하는 공통 인터페이스 사용
단축키
shift + fn + F6
: 같은 이름 다 한꺼번에 바꾸기
➡️ MemberJpaRepositoryTest의 basicCRUD()를 MemberRepositoryTest에 그대로 적용시켜 돌렸을 때도 성공
미리 이름을 맞춰두었음
JpaRepository
인터페이스: 공통 CRUD 제공
제네릭은 <엔티티 타입
, 식별자 타입
> 설정
T findOne(ID)
→ Optional<T> findById(ID)
변경
T
: 엔티티ID
: 엔티티의 식별자 타입S
: 엔티티와 그 자식 타입save(S)
: 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합(merge)한다.delete(T)
: 엔티티 하나 삭제. 내부에서 EntityManager.remove()
호출findById(ID)
: 엔티티 하나 조회. 내부에서 EntityManager.find()
호출getOne(ID)
: 엔티티를 프록시로 조회. 내부에서 EntityManager.getReference()
호출findAll(...)
: 모든 엔티티 조회. 정렬(sort)이나 페이징(pageable) 조건을 파라미터로 제공할 수 있다.
JpaRepository
는 대부분의 공통 메소드를 제공한다.