[JPA] JPA, Hibernate, Spring Data JPA 정리

gyeol·2025년 7월 25일

JPA

목록 보기
12/13
post-thumbnail

JPA (Java Persistence API)

자바 객체와 관계형 데이터베이스를 매핑하는 표준 인터페이스의 집합을 말한다.

  • 영속성을 다루는 인터페이스 기반 API를 정의하고 있다.
  • 실제 구현은 없으며 JPA 기능 자체를 직접 수행하지 않고 구현제에 위임한다
  • EntityManager, @Entity, @OneToMany 등 우리가 자바 코드에서 많이 쓰는 애노테이션들이 주요 인터페이스이다.

Hibernate

Hibernate는 JPA의 대표적인 구현체 중 하나라고 말할 수 있다.

  • JPA 인터페이스를 실제 동작하게 만드는 로직을 제공한다.
  • EntityManager의 내부 동작을 Hibernate가 처리한다.
  • @GeneratedValue, flush, Lazy Loading 등 모두 Hibernate가 처리한다.
  • Hibernate의 고유 기능도 있다. (@BatchSize, @DymanicInsert 등)
  • Spring Boot에서 spring-data-stater-data-jpa 사용 시 기본 구현체로 Hibernate가 사용된다.

Spring Data JPA

JPA를 좀 더 쉽게 사용할 수 있도록 스프링에 제공해주는 추상화 프레임워크이다.

  • JPA 사용 시 반복되는 DAO 코드를 줄여주는 기능을 제공한다.
  • JpaRepository, CrueRepository 등의 인터페이스를 제공한다.
  • 인터페이스 이름만으로 쿼리를 자동 생성한다. (findByEmail(), findByCreatedAtBetween() 등)
  • @Query를 통한 JPQL 정의한다
  • 페이징, 정렬 기능을 지원한다.

요약

계층설명개발자가 작성해야 할 부분
Spring Data JPARepository 자동 구현, CRUD/페이징 자동화MemberRepository extends JpaRepository
JPA엔티티 매핑, 연관관계 설정@Entity, @Id, @ManyToOne, 등
Hibernate내부 동작 (쿼리 생성, 1차 캐시, flush 등)(사용자는 직접 작성하지 않음)
profile
공부 기록 공간 '◡'

0개의 댓글