Java - JPA, Hibernate, Spring Data JPA

김민1·2023년 4월 11일
3
post-thumbnail

JPA

Java Persistence API - 자바 ORM을 위한 표준 기술.

ORM(Object-Relational Mapping) - 자바의 객체와 RDB를 맵핑하는 것으로 DB 특정 테이블이 자바의 객체로 맵핑되어 SQL문을 일일이 작성하지 않고 객체로 구현할 수 있도록 하는 프레임워크

JPA는 Java 어플리케이션에서 RDB(관계형 DB)를 사용하는 방식을 정의한 인터페이스

말 그대로 JPA는 인터페이스고, 특정 기능을 하는 라이브러리가 아닌

자바 어플리케이션에서 RDB를 어떻게 사용해야 하는지를 정의하는 한 방법일 뿐

→ JPA를 정의한 javax.persistence 패키지의 대부분은 interface, enum, Exception, Annotation들로 이루어짐

Hibernate

Hibernate는 JPA라는 명세의 구현체.

  • JPA와 Hibernate의 상속 및 구현 관계

    JPA의 핵심인 EntityManagerFactory, EntityManager, EntityTransaction

    Hibernate에서 각각 SessionFactory, Session, Transaction으로 상속받고 각각 Impl로 구현

말 그대로 Hibernate는 JPA의 구현체이므로 JPA를 사용하기 위해서 반드시 Hibernate를 사용할 필요는 X (DataNucleus, EclipseLink 등 다른 JPA 구현체를 사용해도 됨)

하지만 대부분은 Hibernate를 사용함.

Spring Data JPA

Spring Data JPA ≠ JPA
Spring Data JPA → JPA를 쓰기 편하게 만들어놓은 모듈, Spring에서 제공하는 모듈 중 하나.

→ JPA의 구현체인 Hibernate를 쉽게 사용하기 위한 Spring Data API라는 스프링에서 제공하는 인터페이스

  • JPA를 한 단계 추상화시킨 Repository 라는 인터페이스를 제공.
    • 사용자가 Repository 인터페이스에 정해진 규칙에 맞게 메소드를 입력하면 Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록
  • JPA, Hibernate, Spring Data JPA 설명 이미지

마치며

현재 하고 있는 프로젝트에서 JPA를 사용하고 있어 간단한 정리가 필요할 것 같아서 포스팅을 하게 되었습니다.

수정할 사항이나 추가해야 할 사항이 있다면 댓글이나 이메일로 연락 남겨주세요.

profile
https://kimmin1kk.github.io/ 로 블로그 옮겼습니다

1개의 댓글

comment-user-thumbnail
2023년 4월 11일

흥미롭군요. 고생하셨습니다 김민쿤.

답글 달기