JPA('Java Persistence Api')는 Java 언어를 통해서 데이터베이스와 같은 영속 계층을 처리하고자 하는 스펙이다.
JPA를 이해하기 위해서는 우선은 ORM(Object-Relational Mapping)이라는 기술에 대해 알아야 한다.
ORM과 JPA
- ORM(Object Relational Mapping)은 객체지향과 관련이 있다.
- '객체지향 패러다임을 관계형 데이터베이스에 보존하는 기술'이다.
패러다임 입장에선 객체지향 패러다임을 관계형 패러다임으로 매핑해주는 개념이다.
- '객체지향'의 구조가 '관계형 데이터베이스'와 유사하다는 점에서 시작한다.
ex) 클래스 - 테이블
인스턴스 - Row(Recored 혹은 Tuple)
관계 - 참조
- 이러한 특징으로 객체지향을 자동으로 관계형데이터베이스에 맞게 처리해주는 것이 ORM의 시작이다.
- ORM은 '객체지향'과 '관계형' 사이의 변환기법을 말한다.
- 특정 언어에 국한되는 것이 아니고, 관계형 패러다임을 가지고 있다면 데이터 베이스의 종류를 가리지 않는다.
- 현실적으로 객체지향을 지원하는 여러 언어에서 ORM을 위한 여러 프레임워크가 있다.
- JPA 는 'Java Persistenece Api'의 약어로 ORM을 Java 언어에 맞게 사용하는 '스펙'이다.
- ORM은 상위 개념이고, JPA는 Java라는 언어에 국한된 개념이다.
- JPA는 단순스펙이므로 해당 스펙을 구현하는 구현체마다 회사의 이름이나 프레임워크의 이름이 다르다.
- Hibernate, TopLink, Eclipselink 등 여러 프레임워크가 있지만 Hibernate가 제일 많이 쓰인다.