Spring ORM, JPA, Hibernate, SpringDataJPA, EntityManager 핵심

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

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

Java 및 Spring 기반 웹 개발자, 데이터베이스 연동 개발자 (중급 이상)

핵심 요약

  • ORM은 객체 지향 모델과 관계형 데이터베이스 간 매핑 기술로, @Entity, @OneToManyJPA 스펙을 통해 구현
  • JPA는 ORM 기능을 표준화한 인터페이스이며, EntityManager영속성 컨텍스트 관리1차 캐시 기능 제공
  • SpringDataJpa는 JPA를 추상화하여 리포지토리 메서드 선언만으로 CRUD 자동 생성 지원 (Hibernate 기반)

섹션별 세부 요약

1. ORM(Object-Relational Mapping)

  • 객체 ↔ 테이블, 필드 ↔ 속성 매핑 지원
  • CRUD SQL 쿼리 자동 생성연관 관계(예: @OneToMany) 자동 처리
  • JPA 스펙을 기반으로 EntityManager, @Entity 등 메타데이터 정의

2. JPA(Java Persistence API)

  • Java 진영 ORM 표준 인터페이스로, EntityManager를 통해 영속성 컨텍스트 관리
  • 변경 감지, 엔티티 캐싱, 지연 로딩 기능 제공
  • Hibernate가 주요 구현체이며, AnnotationBinder, MetadataBuilder 등 메타데이터 처리

3. Hibernate

  • JPA 구현체로 1차 캐시 기능 추가
  • SessionFactorySessionEntityManager 구조로 실제 실행 객체 생성

4. SpringDataJpa

  • JPA 추상화 프레임워크로, 리포지토리 메서드 선언만으로 자동 CRUD 생성
  • Hibernate를 기본 구현체로 사용하지만, 대체 가능
  • @Entity, @OneToMany 등 JPA 스펙을 그대로 활용

5. EntityManager

  • 영속성 컨텍스트 관리1차 캐시 기능 제공
  • 엔티티 정보 제공용 메타데이터(@Entity, @OneToMany)와는 별도의 기능 코드

결론

  • SpringDataJpa를 활용하여 리포지토리 메서드 선언만으로 CRUD 자동 생성
  • JPA 스펙을 준수한 @Entity@OneToMany 등 메타데이터 사용 필수
  • Hibernate가 JPA 구현체로 가장 널리 사용되며, EntityManager를 통해 영속성 관리 수행