JPA란?
JPA ·JPA란?
- Java Persistence API의 준말로, 현재 자바 진영의 ORM 기술 표준
- ORM이란? 객체와 관계형 데이터베이스를 매핑해주는 프레임워크
- JPA는 인터페이스의 모음, 구현체로 주로 Hibernate 사용
- 3가지 구현체 존재 Hibernate, EclipseLink, DataNucleus
동작과정
-
JPA는 JAVA 애플리케이션과 JDBC 사이에서 동작한다.
왜 사용해야 하는가?
SQL 중심적인 개발에서 객체 중심으로 개발이 가능
SQL 중심적인 개발의 문제점
- SQL 중심적인 개발은 코드가 반복적이고 수정이 번거로움
- 객체를 관계형 데이터베이스에 저장하는 과정에서 SQL 변환이 번거로움
- 개발보다 SQL 매핑하는 데에 시간을 많이 뺏김
객체 중심 개발의 장점
- 객체를 자바 컬렉션에 저장 하듯이 DB에 저장
- 객체가 모델링된대로 테이블에 저장
- 객체 그래프 탐색 가능
생산성
- 기존의 순수 JDBC의 상당히 반복적이고 많은 코드에서 혁신적으로 코드량이 줄음
유지보수
- 기존에 순수 JDBC에서는 필드를 추가하려면 모든 SQL 쿼리와 클래스를 수정해야 했지만,
- JPA에서는 클래스만 변경하면 나머지는 JPA가 해결해줌.
패러다임의 불일치 해결
- 상속 관계가 있을 때, 신경쓰지 않아도 JPA가 자동으로 처리해줌.
- 간단하게 객체 그래프 탐색이 가능
- 동일한 트랜잭션에서 조회한 엔티티는 같음을 보장
성능
- 1차 캐시와 동일성 보장
- 같은 트랜잭션 안에서는 같은 엔티티를 반환함으로써 약간의 조회 성능 향상
- 트랜잭션을 지원하는 쓰기 지연
- 트랜잭션을 커밋할 때까지 INSERT SQL을 모음
- JDBC BATCH SQL 기능을 사용해서 한번에 SQL 전송
- 지연 로딩
- 객체가 실제 사용될 때 쿼리를 날려서 값을 가져오는 기능
- 즉시 값을 가져올 수도 있음
데이터 접근 추상화와 벤더 독립성