
기본 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는 대부분의 공통 메소드를 제공한다.