728x90
JPA?
- Java Persistence API
- 자바 진영의 ORM 기술 표준
ORM?
- Object-relational mapping(객체 관계 매핑)
- 객체는 객체대로 설계
- 관계형 데이터베이스는 관계형 데이터베이스대로 설계
- ORM 프레임워크가 중간에서 매핑
- 대중적인 언어에는 대부분 ORM 기술이 존재

- JPA가 JDBC API를 호출해서 DB에 SQL을 날리고 결과를 받는 것이다.
저장

조회

JPA는 표준 명세
- JPA는 인터페이스 모음
- JPA 2.1 표준 명세를 구현한 3가지 구현체
- Hibernate, EclipseLink, DataNucleus

JPA를 왜 사용해야 하는가?
- SQL 중심적인 개발에서 객체 중심으로 개발
- 생산성

- 유지보수

패러다임의 불일치 해결
- 상속

- 연관관계

- 신뢰할 수 있는 엔티티

- 비교하기

- 성능
1차 캐시의 동일성 보장
- 같은 트랜잭션 안에서는 같은 엔티티를 반환 - 약간의 조회 성능 향상
- DB Isolation Level이 Read Commit이어도 애플리케이션에서 Repeatable Read 보장
- SQL이 한 번만 실행
트랜잭션을 지원하는 쓰기 지연(transactional write-behind)
- 트랜잭션을 커밋할 때까지 INSERT SQL을 모음
- JDBC BATCH SQL 기능을 사용해서 한 번에 SQL 전송
- 커밋하는 순간 데이터 베이스에 Insert SQL을 모아서 보낸다.
- UPDATE, DELETE로 인한 로우(ROW) 락 시간 최소화
- 트랜잭션 커밋 시 UPDATE, DELETE SQL 실행하고, 바로 커밋
지연 로딩(Lazy Loading)
- 지연 로딩: 객체가 실제 사용될 때 로딩
- 즉시 로딩: JOIN SQL로 한 번에 연관된 객체까지 미리 조회
- 해당 기능을 통해 실제 사용시점까지 데이터 조회를 최대한 미룰 수 있다.
728x90
'자바 ORM 표준 JPA 프로그래밍(인프런)' 카테고리의 다른 글
| Ch01. JPA 소개 - SQL 중심적인 개발의 문제점 (0) | 2022.04.24 |
|---|---|
| Ch11. 객체지향 쿼리 언어2(중급 문법) - 벌크 연산 (0) | 2021.12.18 |
| Ch11. 객체지향 쿼리 언어2(중급 문법) - Named 쿼리 (0) | 2021.12.18 |
| Ch11. 객체지향 쿼리 언어2(중급 문법) - 엔티티 직접 사용 (0) | 2021.12.18 |
| Ch11. 객체지향 쿼리 언어2(중급 문법) - 다형성 쿼리 (0) | 2021.12.18 |