자바 ORM 기술에 대한 API 표준 명세로 사용되는 인터페이스의 모음이다.
ORM 프레임워크가 중간에서 객체와 관계형 데이터베이스를 매핑한다.
ORM를 이용하면 DBMS 벤더마다 다른 SQL에 대한 종속성을 줄이고 호환성 향상이 가능하다.
- SQL 직접 수정하면 하나하나 다 수정해야 한다.
- 텍스트 수정이라 오타가 발생해도 런타임시 확인이 가능하다.
- 관계형 데이터베이스 ≠ 객체 지향 프로그래밍 언어
- DB와 Java 사이의 차이를 메꾸기 위해 개발자는 많은 시간을 들여 수많은 코드와 쿼리를 작성해야한다.
- SQL 중심적인 개발 -> 객체 중심의 개발
- 생상성 때문
- JPA를 사용하면 CURD용 SQL을 개발자가 직접 작성하지 않아도 된다.
- interface 선언만으로도 쿼리 구현이 가능하기 때문에 가볍게 사용할 수 있는 CRUD 쿼리를 대처 할 수 있다.
- maintenance
- 컬럼 추가/삭제 시 직접 관련된 CRUD 쿼리를 모두 수정하는 대신 JPA가 관리하는 모델을 수정하면 된다.
JPA는 SQL 중심의 개발에서 객체 중심의 개발을 위해 사용한다.
개발자가 해야하는 SQL문 작업을 어느정도 도와준다.
JPA의 추상화 리포지터리가 잘 구성되어있으며 확장성도 좋다.
트랙잭션을 따로 만들지 않다도 어노테이션만으로 적용 가능하다.