배우고 익혀 널리 알리자

Spring Data & JPA & Hibernate 차이점

로춘남 2022. 4. 13. 10:54
728x90


Spring Data JPA

Spring Data JPA는 Spring Framework에서 제공하는 모듈 중 하나로, 개발자가 JPA를 좀 더 쉽고 편하게 사용 할 수 있도록 도와준다. 

 

특징을 잠깐 살펴보자면,

  • Hibernate와 같은 구현체들을 좀 더 쉽게 사용할 수 있도록 추상화한 것.
  • JPA를 한 단계 추상화시킨 Repository 인터페이스를 제공.
  • 개발자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면, Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록.
  • Hibernate와 Spring Data JPA를 사용하는 데에는 사실 큰 차이가 없지만 Spring Data JPA가 권장되는 이유는 크게 두 가지.
    • 구현체 교체의 용이성
      • 자바의 Redis 클라이언트가 Jdis에서 Lettuce로 대세가 넘어갈 때 Spring Data Redis를 사용하면 아주 쉽게 교체가 가능.
    • 저장소 교체의의 용이성
      • Spring Data JPA, Spring Data MongoDB, Spring Data Redis등 Spring Data의 하위 프로젝트들은 findAll(), save()등을 동일한 인터페이스로 가지고 있기 때문에 저장소를 교체해도 기본적인 기능이 변하지 않음.

 

JPA

JPA는 Java Persistence API의 약자이며, Java ORM 기술에 대한 표준 명세로, Java에서 제공하는 API이다. 또한 Java 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.

  • JPA는 인터페이스이다! 특정 기능을 하는 라이브러리가 아니다. 어떻게 관계형 데이터베이스를 사용해야 하는지를 정의한 단순한 명세이다.
  • 스프링 PSA에 의해서(POJO를 사용하면서 특정 기술을 사용하기 위해서) 표준 인터페이스를 정해두었는데, 그 중 ORM을 사용하기 위해 만든 인터페이스가 JPA이다.
  • 기존 EJB에서 제공되던 Entity Bean을 대체하는 기술이다.

Hibernate

Hibernate는 JPA 구현체의 한 종류이다.

  • JPA는 관계형 데이터베이스와 자바 객체를 매핑하기 위한 인터페이스(API)를 제공하고 JPA 구현체(Hibernate)는 인터페이스를 구현한 것.
  • JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 class와 같은 관계.
  • Hibernate 외에도 EclipseLink, DataNucleus, OpenJPA, TopLink Essentials 등이 있다.

출처 :

https://velog.io/@hyeinisfree/JPA-JPA-Hibernate-Spring-Data-JPA%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90

728x90