Search
moon
sun
✅

240704_1244_[Spring] ORM, JPA, Hibernate, JDBC 총정리

1. ORM(Object Relational Mapping)

RDB (관계형 데이터베이스)

•
데이터가 행과 열이 있는 테이블로 구성되는 집합 이론 모델.
•
강력하고 효율적인 데이터 저장 및 검색 기능 제공.
•
객체 지향 개념을 모델링하는 데는 적합하지 않음 (상속, 다형성, 레퍼런스, 오브젝트 등).

ORM

•
테이블을 객체지향적으로 사용하기 위한 기술.
•
객체와 DB 테이블이 매핑됨.
•
객체를 조작함으로써 DB를 조작할 수 있게 됨.
•
쿼리문 작성 대신 객체 메서드 호출로 DB 작업 수행.
•
예: SELECT * FROM user → user.findAll().
•
생산성 향상.

ORM 프레임워크 종류

•
JAVA: JPA, Hibernate, EclipseLink, DataNucleus, Ebean 등.

2. JDBC (Java Database Connectivity)

•
데이터베이스에 연결 및 작업을 위한 자바 표준 인터페이스.
•
DBMS 종류에 상관없이 하나의 JDBC API를 이용해 데이터베이스 작업 처리.
•
DB 종류마다 각각의 SQL을 사용하는 불편함을 해결.
•
메소드와 전역변수를 하나의 문법으로 통일.

JDBC 아키텍쳐

•
Service와 Data Access, DB 연관 관계를 관리.

3. JPA (Java Persistence API)

•
Hibernate 기반의 새로운 자바 ORM 기술 표준.
•
자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스.
•
영속성 컨텍스트인 EntityManager를 통해 Entity를 관리.
•
Entity와 관련된 테이블에 대한 SQL 쿼리문을 생성하고 관리.
•
필요시 JDBC API를 통해 DB에 쿼리 전송.

Persistence Context

•
Entity를 저장하는 비휘발성 환경.
•
DB와의 통신 횟수 및 방식을 효율적으로 관리.
•
1차 캐시, 쓰기 지연, Dirty Checking 등 기능 제공.
•
EntityManagerFactory: WAS 시작 시 생성, 종료 시 소멸.
•
EntityManager: Entity 생명주기 관리.

JPA의 구현체

•
JPA는 인터페이스, Hibernate는 구현체.
•
JPA는 JDBC API를 사용하여 DB와 통신.
•
Entity에 대한 CRUD는 JPA가 자동 생성.

4. Spring Data JPA

•
JPA를 더 쉽게 사용하기 위한 상위 프레임워크.
•
인터페이스 및 주석 세트를 제공하여 데이터 액세스 계층을 쉽게 구축.
•
Repository 인터페이스를 통해 쿼리를 날릴 수 있음.
•
@Query, QueryDSL로 SQL 문 실행 가능.

핵심

•
메서드 이름 규칙 기반으로 JPA 쿼리 자동 생성.

5. Hibernate

•
자바 언어를 위한 ORM 프레임워크.
•
JPA의 구현체로, 내부적으로 JDBC API 사용.
•
JPA와 Hibernate 관계: 인터페이스와 그 구현체.
•
Hibernate는 JPA의 구현체로서 JPA 요청 정보를 JDBC 표준화 작업 후 전달.

Hibernate의 작동 방식

•
JPA의 EntityManagerFactory, EntityManager, EntityTransaction을 상속받아 구현.
•
JPA 사용 위해 Hibernate 필수 아님 (다른 JPA 구현체 사용 가능).

핵심

•
JPA의 구현체로서 JPA에서 넘겨받은 정보를 표준화해 JDBC에 전달.

결론

•
ORM은 객체 지향적으로 DB를 사용하기 위한 기술이며, JPA와 Hibernate는 이를 구현하기 위한 주요 도구
•
JDBC는 DB와의 통신을 위한 표준 인터페이스로, JPA와 Hibernate는 JDBC를 내부적으로 사용하여 DB와 상호작용함
•
Spring Data JPA는 JPA를 더 쉽게 사용하도록 돕는 프레임워크

안녕하세요😊

•
한국전자기술연구원 김영광입니다.
•
관련 기술 문의와 R&D 공동 연구 사업 관련 문의는 “glory@keti.re.kr”로 연락 부탁드립니다.

Hello 😊

•
I'm Yeonggwang Kim from the Korea Electronics Research Institute.
•
For technical and business inquiries, please contact me at “glory@keti.re.kr”