Object-Related Mapping
자바의 객체와 DB를 연결하는 프로그래밍 기법
ORM이 없다면?
- SQL을 직접 작성해야 하므로 반복 작업이 많음
- 객체와 테이블 간 불일치
- 유지보수 어려움 (SQL 하드코딩 등)
ORM이 있다면 DB의 값을 객체처럼 사용 가능
즉, SQL을 몰라도 자바 언어로 DB에 접근해서 데이터를 다룰 수 있다!
[애플리케이션]
↓
[Spring Data JPA]
↓
[JPA (자바 ORM 표준)]
↓
[Hibernate (JPA 구현체)]
↓
[JDBC]
↓
[데이터베이스]
| 항목 | 설명 |
|---|---|
| ORM | 객체와 관계형 DB 간 매핑을 위한 개념 |
| JPA | 자바 진영의 ORM 표준 API (사양) |
| Hibernate | JPA의 대표적인 구현체 (ORM 프레임워크) |
| 구분 | JPA | MyBatis |
|---|---|---|
| 기반 | ORM (객체 ↔ 테이블 자동 매핑) | SQL Mapper (SQL 직접 작성) |
| SQL 작성 | 대부분 생략 가능 (JPQL/자동 생성) | 직접 작성 필수 |
| 생산성 | 단순 CRUD는 매우 빠름 | 쿼리 제어는 직접 하므로 유연성 ↑ |
| 유연성 | 복잡한 쿼리 작성 어려움 (JPQL, Native 사용 필요) | 복잡한 SQL에 강함 |
| 학습 난이도 | 개념이 복잡 (영속성 컨텍스트, 지연 로딩 등) | 직관적 (SQL만 알면 됨) |
| 러닝 커브 | 중간~높음 | 낮음 |
| 대표 기능 | 지연 로딩, 캐시, 더티 체킹, 객체 상태 관리 | SQL 재사용, 동적 SQL (if, choose 등) 가능 |
| 자동화 수준 | 높음 (SQL 자동 생성) | 낮음 (모든 SQL 수동 작성) |