JPA
출처 : 인프런 김영한님의 강의 “자바 ORM 표준 JPA 프로그래밍 - 기본편” 중 일부
🚫 아래 내용은 주관적인 생각이므로 사실과 다를 수 있습니다.
개요
JPA(Java Persistence API)에 대한 내용
내용
정의
JPA(Java Persistence API)는
자바 진영의 ORM(Object-Releational Mapping) 기술 표준이다.
JPA는 DB와 소통하는 JDBC API와 JAVA 어플리케이션 사이에서 동작한다.
하는 일
- 저장의 경우
- Entity 분석
- INSERT SQL 생성
- JDBC API 사용
- 패러다임 불일치 해결
- 조회의 경우
- SELECT SQL 생성
- JDBC API 사용
- ResultSet 매핑
- 패러다임 불일치 해결
사용시 장점
- SQL 중심적인 개발에서 객체 중심으로 개발 할 수 있다.
- 생산성
- 유지보수
- 패러다임의 불일치 해결
- 상속
- 연관관계
- 객체 그래프 탐색
- 비교하기
- 성능
- 1차 캐시와 동일성 보장
- 이미 조회된 내용은 캐싱해서 재활용
- 같은 트랜잭션 안에서는 같은 엔티티를 반환
- DB Isolation Level이 Read Commit이어도,
애플리케이션에서 Repeatable Read 보장
- 이미 조회된 내용은 캐싱해서 재활용
- 트랜잭션을 지원하는 쓰기 지연(transactional wire-behind)
- 트랜잭션을 커밋할 때까지 INSERT SQL을 모아뒀다가
JDBC BATCH SQL 기능을 사용해서 한번에 SQL 전송 - UPDATE, DELETE로 인한 Row 락 시간 최소화
- 비즈니스 로직을 수행하는 동안에는 DB Row에 락이 걸리지 않다가,
트랜잭션 커밋시 UDATE, DELETE SQL 실행하고 바로 커밋
- 트랜잭션을 커밋할 때까지 INSERT SQL을 모아뒀다가
- 지연 로딩(Lazy Loading)과 즉시 로딩
- 지연 로딩: 객체가 실제로 사용될 때 로딩
- 즉시 로딩: JOIN SQL로 한번에 연관된 객체까지 미리 조회
- 1차 캐시와 동일성 보장
- 데이터 접근 추상화와 벤더 독립성
- 표준
댓글남기기