Spring) ORM, JPA, Hibernate, SpringDataJpa, EntityManager 핵심 개념 정리
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
Java 및 Spring 기반 웹 개발자, 데이터베이스 연동 개발자 (중급 이상)
핵심 요약
- ORM은 객체 지향 모델과 관계형 데이터베이스 간 매핑 기술로,
@Entity
,@OneToMany
등 JPA 스펙을 통해 구현 - 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차 캐시 기능 추가
SessionFactory
→Session
→EntityManager
구조로 실제 실행 객체 생성
4. SpringDataJpa
- JPA 추상화 프레임워크로, 리포지토리 메서드 선언만으로 자동 CRUD 생성
- Hibernate를 기본 구현체로 사용하지만, 대체 가능
@Entity
,@OneToMany
등 JPA 스펙을 그대로 활용
5. EntityManager
- 영속성 컨텍스트 관리 및 1차 캐시 기능 제공
- 엔티티 정보 제공용 메타데이터(
@Entity
,@OneToMany
)와는 별도의 기능 코드
결론
- SpringDataJpa를 활용하여 리포지토리 메서드 선언만으로 CRUD 자동 생성
- JPA 스펙을 준수한
@Entity
및@OneToMany
등 메타데이터 사용 필수 - Hibernate가 JPA 구현체로 가장 널리 사용되며,
EntityManager
를 통해 영속성 관리 수행