JuBin's personal study blog

JPA, Hibernate, Spring Data JPA의 차이점 본문

JAVA

JPA, Hibernate, Spring Data JPA의 차이점

JuBin 2021. 5. 23. 17:11
반응형

간단한 기본적인 개념을 알고 사용하자.

 

JPA

- JPA는 기술 명세이다. 자바 어플리케이션에서 RDBMS를 사용하는 방식을 정의해 놓은 인터페이스이다.

- 말그대로 JPA는 인터페이스이다. 라이브러리가 아니다. 단순 명세이기 때문에 구현이 없다.

- 클라이언트가 백엔드API명세를 보고 어떻게 호출해야 하는지를 정의해놓은 것과 같다.

 

Hibernate

- Hibernate는 JPA를 구현한 구현체이다. JPA명세를 보고 구현해 놓은것이다.

- Hibernate는 마치 자바의 interface를 구현한 class와 같다고 생각하면 된다.

- JPA를 사용하기 위해서는 반드시 Hibernate를 사용할 필요없이 JPA를 구현한 구현체들을 EclipseLink, DataNucleus 등과 같이 여러가지 구현체가 있다.

 

 

Spring Data JPA(Repository)

- Spring Data JPA는 JPA를 편하기 쓰기위해 Spring에서 제공해주는 모듈이다.

- JPA를 한단계 추상화한 Repository라는 인터페이스를 제공한다.

- JPA를 추상화했다는 말은, Spring Data JPA의 Repository의 구현부에서 JPA를 사용하고 있다는 뜻이다.

- 예를들면 Repository 인터페이스 구현체인 SimpleJpaRepository를 까보면 EntityManager를 사용하고 있다.

 

 

 

아래 그림은 위의 전체적인 내용을 그림으로 표현한것이다.

 

출처 : https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/

반응형