Java에서 제공하는 API로, Java ORM 기술에 대한 API 표준 명세이다.
즉, 명세(Interface)이므로 JPA만 가지고는 기술을 적용할 수 없고 기술을 적용하기 위해선 구현체(class)가 필요하다.
JPA는 위에 언급했다시피, ORM 기술의 하나로 객체와 RDB(관계형 데이터베이스)의 데이터 자체와 매핑하기 때문에 SQL을 직접 작성할 필요가 없다.
SQL을 직접 작성해서 사용해야하는 SQL Mapper의 종류에는 MyBatis가 있다.
JPA에 대해 간단하게 그림으로 표현하자면 아래와 같다.
JPA는 JDBC의 추상화된 버전으로 개발자가 JPA를 사용하면 JPA는 내부적으로 JDBC API를 사용하여 DB와 통신하게 된다.
- 데이터베이스에 종속되지 않아, 추후 데이터베이스 변경이나 코드 재활용이 가능하다.
- 테이블 생성, 변경 등 Entity 관리가 간편하다.
- 컴파일 시, 오류를 확인할 수 있다.
- 코드 레벨로 관리되므로 사용하기 용이하고 생산성이 높다.
- 복잡한 연산을 수행하기에는 다소 무리가 있다. (초기에는 생산성이 높을 수 있으나, 운영 시 성능상 이슈가 발생할 수 있다.)
- 고도화 될수록 학습 곡선이 높아질 수 있음