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”