ORM, JPA, Hibernate, SpringDataJpa, EntityManager 핵심 개념 정리

띠요오옹·2025년 5월 15일
8

우테코 7기 BE

목록 보기
5/9

ORM(Object-Relational Mapping)

  • 객체 지향 언어에서 사용하는 객체를 DB 와 매핑해 주는 관련 기술. 아래의 기술들로 구성됨.
    1. 클래스 ↔ 테이블 매핑 지원
      • 필드 ↔ 속성
      • 객체 ↔ 칼럼
    2. CRUD SQL 쿼리 자동 매핑 지원
    3. 연관 관계(참조 관계), 상속 자동 지원
      • 객체 그래프를 RDB의 FK나 JOIN전략으로 다룸

JPA(JavaPersistanceApi)

  • 자바 진영에서 ORM을 사용하기 위해 정의한 표준 인터페이스.
    • EntityManager, @Entity, @OneToMany 등이 정의된다.
      • EntityManager : 영속성 컨텍스트를 관리하는 JPA의 핵심 인터페이스 객체 (ORM 기능을 제공)
      • @Entity, @OneToMany : JPA 스펙에 정의된 메타데이터로, 별도의 기능 코드는 없음.(엔티티 정보 제공용)
      • 변경 감지, 엔티티 캐싱, 지연 로딩 지원

Hibernate

  • JPA를 구현하는 실제 구현체이며, 1차 캐시 등의 자체 기능도 추가적으로 제공함.
  • 내부의 AnnotationBinder, MetadataBuilder@Entity 등의 메타데이터를 읽고 해당 정보를 기반으로 SessionFactory 를 생성
  • SessionFactory 가 생성하는 SessionEntityManger 실제 구현체
  • 1차 캐시(≓영속성 컨텍스트) : EntityManager가 관리하는 메모리 공간 객체

SpringDataJpa

  • JPA를 구현하는 구현체를 설정 및 주입하고 이를 한 번 더 추상화하며 편의 기능을 추가한 Spring 기반 프레임워크
    • 리포지토리 메서드 선언 만으로 메서드 이름을 활용하여 기본적인 CRUD 코드를 자동으로 지원하는 기능이 추가되었다.
    • 기본적으로 JPA 구현체로 Hibernate를 사용하지만, 다른 구현체로 변경도 가능하다
profile
Welcome to my velog

2개의 댓글

comment-user-thumbnail
2025년 5월 16일

떠먹는 요거트님 글이 항상 직관적이고 잘 읽히네요!

1개의 답글