JPA(Java Persistence API)
- 자바 ORM 기술에 대한 API 표준 명세
- 애플리케이션과 JDBC 사이에서 동작
ORM(Object-Relational Mapping)
- 객체와 관계형 데이터베이스를 매핑
- 단순히 SQL을 개발자 대신 생성해서 데이터베이스에 전달해주는 것뿐만 아니라 다양한 패러다임의 불일치 문제들도 해결
- hibernate: 오픈소스 ORM 프레임워크 가장 많이 사용
JPA를 사용해야 하는 이유
- 생산성
- 자바 컬렉션에 객체를 저장하듯이 JPA에게 저장할 객체를 전달하면 됨
- INSERT SQL을 작성하고 JDBC API를 사용하는 반복적인 일을 JPA가 대신 처리
- CREATE TABLE 같은 DDL문을 자동으로 생성
- 데이터베이스 설계 중심 패러다임 -> 객체 설계 중심으로 역전
- 유지보수
- SQL과 JDBC API 코드를 개발자 대신 JPA가 처리해 주므로 유지보수 해야 하는 코드 수가 줄어듦
- 유연하고 유지보수하기 좋은 도메인 모델을 편리하게 설계 가능
- 패러다임의 불일치 해결
- 상속, 연관관계, 객체 그래프 탐색, 비교하기와 같은 패러다임의 불일치 문제 해결
- 성능
- 애플리케이션과 데이터베이스 사이에서 다양한 성능 최적화 기회 제공
- 데이터 접근 추상화와 벤더 독립성
- 관계형 데이터베이스는 같은 기능도 벤더마다 사용법이 다른 경우가 많음
- EX) 페이징 처리는 데이터베이스마다 달라서 사용법을 각각 배워야 함
-> 애플리케이션은 처음 선택한 데이터베이스 기술에 종속되고 다른 데이터베이스로 변경하기 매우 어려움 - JPA는 애플리케이션과 데이터베이스 사이에 추상화된 데이터 접근 계층을 제공해서 애플리케이션이 특정 데이터베이스 기술에 종속되지 않도록 함
- 로컬 개발 환경 H2 데이터베이스 사용, 개발이나 상용 환경은 오라클이나 MySQL 데이터베이스 사용 가능
- 표준
출처: 자바 ORM 표준 JPA 프로그래밍 | 김영한 지음