자바 객체와 관계형 데이터베이스를 매핑하는 표준 인터페이스의 집합을 말한다.
EntityManager, @Entity, @OneToMany 등 우리가 자바 코드에서 많이 쓰는 애노테이션들이 주요 인터페이스이다.Hibernate는 JPA의 대표적인 구현체 중 하나라고 말할 수 있다.
EntityManager의 내부 동작을 Hibernate가 처리한다.@GeneratedValue, flush, Lazy Loading 등 모두 Hibernate가 처리한다.@BatchSize, @DymanicInsert 등)spring-data-stater-data-jpa 사용 시 기본 구현체로 Hibernate가 사용된다.JPA를 좀 더 쉽게 사용할 수 있도록 스프링에 제공해주는 추상화 프레임워크이다.
JpaRepository, CrueRepository 등의 인터페이스를 제공한다.findByEmail(), findByCreatedAtBetween() 등)@Query를 통한 JPQL 정의한다
| 계층 | 설명 | 개발자가 작성해야 할 부분 |
|---|---|---|
| Spring Data JPA | Repository 자동 구현, CRUD/페이징 자동화 | MemberRepository extends JpaRepository |
| JPA | 엔티티 매핑, 연관관계 설정 | @Entity, @Id, @ManyToOne, 등 |
| Hibernate | 내부 동작 (쿼리 생성, 1차 캐시, flush 등) | (사용자는 직접 작성하지 않음) |