JPA는 표준 인터페이스를 제공하고, Hibernate는 JPA를 구현하며, Spring Data JPA는 JPA 사용을 간편하게 만들어주기 때문에 이 세 가지를 함께 사용합니다. Spring Data JPA는 Repository 인터페이스를 통해 데이터 액세스 코드를 줄이고, Hibernate는 JPA 표준을 준수하며 실제 데이터베이스와의 통신을 담당합니다.
1. JPA (Java Persistence API)
JPA는 Java 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의하는 표준 명세이다. JPA는 인터페이스의 집합이며, 실제 구현은 제공하지 않는다. JPA는 객체-관계 매핑(ORM)을 위한 인터페이스와 어노테이션을 제공하며, EntityManager와 같은 핵심 인터페이스를 정의함.
- 주요 역할:
- ORM 기술 사용을 위한 표준 정의
- EntityManager, EntityTransaction 등의 인터페이스 제공
- 특징:
- 특정 기능을 수행하는 라이브러리가 아닌 인터페이스
- 구현체가 없으므로 JPA만으로는 데이터베이스 연동 X
2. Hibernate
Hibernate는 JPA 인터페이스를 구현하는 ORM 프레임워크이다. Hibernate는 JPA의 구현체로서, 데이터베이스와 Java 객체 간의 매핑을 자동으로 처리하고 SQL 쿼리 작성 없이 데이터베이스 작업을 수행할 수 있도록 지원합니다.
- 주요 역할:
- JPA 인터페이스 구현
- 객체와 관계형 데이터베이스 간의 매핑 자동 처리
- SQL 쿼리 대신 객체 중심으로 데이터베이스 조작 가능
- 특징:
- JPA의 모든 기능을 지원하며 JPA 구현체로서 작동
- 다양한 데이터베이스 벤더 지원
3. Spring Data JPA
Spring Data JPA는 Spring 프레임워크에서 JPA를 더욱 쉽고 편리하게 사용할 수 있도록 지원하는 모듈입니다. Spring Data JPA는 JPA를 추상화한 Repository 인터페이스를 제공하여, CRUD (Create, Read, Update, Delete) 작업에 필요한 상용구 코드를 줄여줍니다.
- 주요 역할:
- JPA 기반 데이터 액세스 계층 구현 단순화
- Repository 인터페이스를 통해 JPA 사용 편의성 향상
- 메서드 이름 규칙을 기반으로 쿼리 자동 생성
- 특징:
- Spring 프레임워크의 일부로, JPA를 추상화하여 더 쉽게 사용 가능
- 자동 쿼리 생성, 트랜잭션 관리 등 기능 제공
동작 방식 요약
- JPA: 자바 객체와 관계형 데이터베이스 간의 연동(ORM)을 위한 표준 인터페이스 정의의 집합.
- Hibernate: JPA 인터페이스를 구현하여 실제 데이터베이스와 통신하고 객체-관계 매핑(ORM) 수행.
- Spring Data JPA: Repository 인터페이스를 통해 데이터 액세스 로직을 추상화하고, JPA 사용을 간소화.
'General > JPA' 카테고리의 다른 글
[JPA] orphanRemoval vs CascadeType.REMOVE 정리 (1) | 2025.05.07 |
---|---|
[JPA] 연관관계 주인이란? (0) | 2025.05.07 |