# ORM(Object Relational Mapping)
- Application의 객체(클래스)를 DB의 테이블로 Mapping 한다는 개념
- 클래스와 DB의 테이블은 기존부터 호환가능성을 염두해두고 만들어진 것이 아니기 때문에 불일치 발생이 당연
- 이러한 불일치를 해결하며 객체와 테이블의 관계를 바탕으로 SQL 문장을 자동으로 생성하여 객체로 DB를 조작하게 해주는 것이 ORM
# JPA(Java Persistence API)
- JAVA진영의 표준 ORM
- 인터페이스, 구체 클래스는 거의 없음.
# Hiberante
- JPA를 implements 해 구현한 class 라이브러리
- DataNucleus, EclipseLink 등 JPA를 구현한 다른 라이브러리도 있다.
# Spring Data JPA
- JPA를 한 단계 더 추상화시킨 인터페이스(Repository) 겸 클래스
- Spring Application과 호환이 편하다.
# JPA, Hibernate, Spring Data JPA, ORM 개념도