김영한님이 지음, [자바 ORM 표준 JPA 프로그래밍] 책을 읽고 정리한 필기입니다.📢
JPA란 무엇인가?
JPA
JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다.
💡 ORM 이란?
ORM(Object-Relational Mapping)은 이름 그대로 객체와 관체형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해 준다. 예를 들어 INSERT SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM프레임워크가 적절한 INSERT SQL을 생성해 데이터베이스에 객체를 저장해준다.
JPA 저장
JPA 조회
ORM 프레임워크는 개발자 대신 SQL을 생성해주고 패러다임 불일치 문제들을 해결해줌으로써 객체 측면에서의 정교한 객체지향 모델링 가능하게 해준다.
자바 진영의 다양한 ORM 프레임워크 중 거의 대부분의 패러다임 불일치 문제를 해결해주는 성숙한 ORM 프레임워크인 **하이버네이트**를 주로 사용한다.
JPA 소개
기존 자바 빈즈(EJB)의 엔티티 빈이라는 ORM 기술과 비교해서 가볍고 실용적이고 기술 성숙도가 높은 하이버네이트 오픈소스 ORM 등장
EJB 3.0에서 하이버네이트를 기반으로 새로운 ORM 기술 표준이 만들어졌고 이것이 바로 JPA
JPA 표준 인터페이스와 구현체
JPA는 자바 ORM 기술에 대한 API 표준 명세다.
JPA 버전별 특징
- JPA 1.0(JSR 220) 2006년 : 초기버전, 복합 키와 연관관계 기능이 부족
- JPA 2.0(JSR 317) 2009년 : 대부분의 ORM 기능 포함, JPA Criteria 추가
- JPA 2.1(JSR 338) 2013년 : 스토어드 프로시저 접근, 컨버터, 엔티티 그래프 기능 추가
JPA를 사용해야 하는 이유
-
생산성
- 자바 컬렉션에 객체를 저장하듯 사용 가능
- 지루하고 반복적인 일은 JPA가 처리해 줌
- DDL문 자동 생성 기능
-
유지보수
- 개발자가 작성해야 했던 SQL, JDBC API 코드를 JPA가 대신 처리해줌으로써 유지보수 코드 수 감소
- 객체지향 모델링을 가능케 해줌으로써 유연하고 유지보수하기 좋은 도메인 모델을 편리하게 설계 가능
-
패러다임 불일치 해결
- 상송, 연관관계, 객체 그래프 탐색, 비교 문제의 패러다임 불일치 문제 해결해 줌
-
성능
- 애플리케이션과 데이터베이스 사이에서 다양한 성능 최적화 기회 제공
- 동일한 객체를 대상으로 한 쿼리는 한번만 실행하고, 객체를 재사용
- 애플리케이션과 데이터베이스 사이에서 다양한 성능 최적화 기회 제공
-
데이터 접근 추상화와 벤더 독립성
-
추상화된 데이터 접근 계층을 제공함으로써 애플리케이션이 특정 데이터베이스에 종속되지 않도록 함
벤더의 독립성
-
-
표준
- JPA는 자바 진영의 ORM 표준이기 때문에 다른 구현 기술로 손쉽게 변경 가능하다.
댓글남기기