public interface PostsRepository extends JpaRepository<Posts, Long> {
}
JpaRepository
: 인터페이스는 공통 CRUD를 제공하며 Generic은 <엔티티 타입, 식별자 타입>으로 설정
PostsRepository
: JPA가 스스로 인터페이스에 대한 Proxy객체(구현 클래스)를 생성하여 PostsRepository를 구현하기 때문에 인터페이스만으로 JPA가 동작하도록 설계되어 있다.
Spring Data JPA가 적용된 인터페이스는 Compnent-Scan 대상이므로 @Repository 어노테이션이 생략 가능하다.
영속성 컨텍스트 : 엔티티를 영구 저장하는 환경
JPA 핵심 내용은 엔티티가 영속성 컨텍스트에 포함되어 있냐 아니냐
JPA의 엔티티 매니저(EntityManager)가 활성화 된 상태로 트랜잭션 안에서 테이터베이스에서 테이터를 가져오면 이 데이터는 영속성 컨텍스트가 유지된 상태
이 상태에서 해당 데이터의 값을 변경하면 트랜잭션이 끝나는 시점에 해당 테이블에 변경분을 반영
더티체킹(dirty checking)
Entity 객체의 값만 변경하면 별도로 Update쿼리를 날릴 필요가 없다는 것