JPA란?
- Java Persistensce API의 줄임말로 자바의 ORM 기술 표준
ORM 이란?
- Object-Relational Mapping(객체 관계 매핑) 의 줄임말
- 객체는 객체대로, RDBMS는 RDBMS대로 설계
- ORM 프레임워크가 중간에 매핑
동작 방식
- JPA는 애플리케이션과 JDBC 사이에서 동작
- JPA 내부에서 JDBC API를 사용해 SQL을 호출해 DB와 통신
- 개발자는 ORM 프레임워크에 맞춰 적절한 쿼리문을 생성해 데이터 관리
- 저장시, 저장하고자 하는 객체를 전달하면 JPA에서 분석과 Insert 쿼리 생성 등을 진행하여 패러다임 불일치를 해결
- 조회도 비슷한 형태
JPA 구현체
- JPA는 인터페이스의 모음이며, 이를 구현해야 사용 가능
- 대표 3가지 구현체로 하이버네이트, EclipseLink, DataNucleus
사용이유
SQL 중심적인 개발에서 객체 중심 개발로 전환
- 저장:
jpa.persist()
- 조회:
jpa.find()
- 수정:
member.setNAme("변경이름")
- 삭제:
jpa.remove()
- 위의 내용 처럼 JPA를 사용하는 것은 객체 형태로 구현 가능하도록 지원
유지보수
- 기존 필드 변경시에는 모든 SQL 수정 필요
- JPA에서는 필드만 추가, SQL은 JPA가 처리
패러다임의 불일치 해결
- 상속/ 연관관계/ 객체 그래프 탐색(지연 로딩) 등을 JPA에서 처리
- 비교 기능도 제공(Collection 비교와 동일)
성능 최적화 기능
- 1차 캐시와 동일성(Identity) 보장
- 트랜잭션 지원하는 쓰기 지연(transactional write-behind)
- 지연로딩(Lazy Loading)
참조