Spring Framework

JPA, Hibernate, Spring Data JPA 의 차이

데굴데굴. 2020. 2. 28. 16:54

JPA

  • Java Persistence API
  • 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 (=구현체가 아님)
  • javax.persistence 패키지의 대부분은 interface, enum, Exception, Annotation으로 이루어져 있다.

 

Hibernate

  • JPA의 구현체 (Hibernate만 있는 것은 아님)
  • javax.persistence.EntityManager와 같은 JPA의 인터페이스를 직접 구현한 라이브러리

 

Spring Data JPA

  • JPA를 한 단계 더 추상화시킨 모듈. (Spring Data JPA의 Repository의 구현에서 JPA를 사용하고 있다는 뜻)
  • Repository라는 인터페이스를 제공한다. Repository가 Spring Data JPA의 핵심!
  • Repository: 사용자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면 Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록해준다.