ORM과 JPA, Hibernate

Hazel·2025년 7월 14일
post-thumbnail

ORM이란?

  • Object-Related Mapping

  • 자바의 객체와 DB를 연결하는 프로그래밍 기법

    ORM이 없다면?

    • SQL을 직접 작성해야 하므로 반복 작업이 많음
    • 객체와 테이블 간 불일치
    • 유지보수 어려움 (SQL 하드코딩 등)
  • ORM이 있다면 DB의 값을 객체처럼 사용 가능

  • 즉, SQL을 몰라도 자바 언어로 DB에 접근해서 데이터를 다룰 수 있다!

전체 구조

[애플리케이션]
    ↓
[Spring Data JPA]
    ↓
[JPA (자바 ORM 표준)]
    ↓
[Hibernate (JPA 구현체)]
    ↓
[JDBC]
    ↓
[데이터베이스]

ORM의 장점

  1. SQL 작성하지 않고 DB에 접근
  2. 객체지향적으로 코드 작성 가능 -> 비즈니스 로직에만 집중
  3. DB 시스템이 추상화 되어 있기 때문에 종속성이 줄어듦
  4. 매핑하는 정보가 명확하기 때문에 ERD에 대한 의존도 ↓ 유지보수 ↑

ORM의 단점

  1. 프로젝트의 복잡성 ∝ 사용 난이도
  2. 복잡한 쿼리는 ORM으로 해결 불가능한 경우도 있음

JPA란?

  • 자바 객체와 데이터베이스를 연결해 데이터를 관리
  • 객체 지향 도메인 모델과 데이터베이스의 다리 역할
  • ORM 기능을 자바에서 표준화해서 제공
  • 실제 동작은 구현체(Hibernate 등)가 담당함

Hibernate

  • 자바에서 사용하는 대표적인 ORM 프레임워크
  • JPA의 구현체이자 ORM 기능을 폭넓게 제공하는 오픈소스 라이브러리
  • 내부적으로는 JDBC API 사용

ORM & JPA & Hibernate의 관계성

항목설명
ORM객체와 관계형 DB 간 매핑을 위한 개념
JPA자바 진영의 ORM 표준 API (사양)
HibernateJPA의 대표적인 구현체 (ORM 프레임워크)

MyBatis와의 차이점

  • JPA는 SQL을 감추고 객체 중심으로 개발하는 ORM
  • MyBatis는 SQL을 직접 작성하는 Mapper 기반 프레임워크
구분JPAMyBatis
기반ORM (객체 ↔ 테이블 자동 매핑)SQL Mapper (SQL 직접 작성)
SQL 작성대부분 생략 가능 (JPQL/자동 생성)직접 작성 필수
생산성단순 CRUD는 매우 빠름쿼리 제어는 직접 하므로 유연성 ↑
유연성복잡한 쿼리 작성 어려움 (JPQL, Native 사용 필요)복잡한 SQL에 강함
학습 난이도개념이 복잡 (영속성 컨텍스트, 지연 로딩 등)직관적 (SQL만 알면 됨)
러닝 커브중간~높음낮음
대표 기능지연 로딩, 캐시, 더티 체킹, 객체 상태 관리SQL 재사용, 동적 SQL (if, choose 등) 가능
자동화 수준높음 (SQL 자동 생성)낮음 (모든 SQL 수동 작성)
profile
이것저것 학습 기록장

0개의 댓글