5 Jan 2021
Spring Data JPA, Hibernate, JPA
Spring Data JPA, Hibernate, JPA
JPA는 기술 명세이다.
JPA는 Java Persistence API의 약자로, 자바 어플리케이션이 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. 그래서 java.persistence패키지의 구성에는 interface,enum,Annotation으로 주로 이루어져있다.
Hibernate는 JPA를 구현한 구현체이다.
JPA와 Hibernate는 자바의 interface와 해당 인터페이스를 구현한 클래스와 같은 관계이다.
이러한 사실때문에 JPA를 사용하는데 꼭 Hibernate를 사용할 필요는 없다. 이외에도 DataNucleus, EclipseLink 등 다른 JPA 구현체를 사용해도 되기 때문이다. 다만 Hibernate가 대중적으로 많이 사용할 뿐이다.
Spring Data JPA는 Spring에서 JPA를 쓰기 편하게 만들어 놓은 모듈이다.
Spring에서 JPA를 사용할때 EntityManager 를 본적이 없다. 대부분 Repository를 정의해서 사용하는 사람이 대부분일 것이다. Spring Data JPA는 개발자가 JPA를 사용하기 편하도록 추상화 시킨 Repository 라는 인터페이스를 제공하며 이는 Repository 구현에서 JPA를 사용하고 있다는 말이 된다. 예를 들면 Repository 인터페이스의 기본 구현체를 보면 EntityManager 가 사용되고 있는 것을 볼 수 있다.