참조
블로그:
https://lealea.tistory.com/238
JPA
객체-관계 매핑(ORM)을 위한 표준 인터페이스
자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스와 어노테이션의 표준 집합을 정의
주의할 점은 JPA는 특정 기능을 하는 라이브러리가 아닌 인터페이스라는 점
즉, ORM 사용을 위한 명세를 정의할 뿐 구체적인 정의를 하지 않으며 Hibernate, EclipseLink, OpenJPA 등의 인터페이스 구현체를 통해 사용
Hibernate
JPA 인터페이스를 구현한 구현체
JPA 모든 기능을 지원하며 개발자가 일일이 SQL 쿼리를 작성하지 않도록 도와줌
Spring Data JPA
스프링으로 개발하면서 EntityManager를 직접 다뤄본 적이 없는 이유는 DB 접근이 필요한 경우 Repository를 정의하여 사용하였기 때문이며 Repository가 Spring Data JPA 핵심
Repository는 JPA를 한 단계 더 추상화 시킨 인터페이스
Spring Data JPA는 Spring에서 제공하는 모듈 중 하나이며, JPA위에 추가적인 기능을 제공
사용자가 Repository 인터페이스에 정해진 규칙대로 메서드명을 작성하면 쿼리를 생성
CRUD, 페이징, 정렬 등과 같은 반복적인 코드 양을 줄이는 인터페이스와 클래스 제공
정리
Java Application에서 DB 접근 과정
JPA 사용과 Spring Data JPA 사용 비교