JPA 소개 및 JPA의 기본 동작 과정

인프런 강의 참고

Goal

  • ORM이란
  • JPA란
  • JPA의 동작 과정
  • JPA를 사용해야 되는 이유

ORM(Object-relational mapping) 이란

JPA(Java Persistence API) 란

JPA의 동작 과정

저장 과정

조회 과정

JPA를 왜 사용해야 하는가?

1. SQL 중심적인 개발에서 객체 중심으로 개발

2. 생산성

3. 유지보수

4. Object와 RDB 간의 패러다임 불일치 해결

1) JPA와 상속

2) JPA와 연관관계

3) JPA와 객체 그래프 탐색

4) JPA와 비교하기

5. JPA의 성능 최적화 기능

1) 1차 캐시와 동일성(identity) 보장 - 캐싱 기능

  1. 같은 트랜잭션 안에서는 같은 엔티티를 반환 - 약간의 조회 성능 향상 (크게 도움 X)
    String memberId = "100"; 
    Member m1 = jpa.find(Member.class, memberId); // SQL 
    Member m2 = jpa.find(Member.class, memberId); // 캐시 (SQL 1번만 실행, m1을 가져옴)
    println(m1 == m2) // true
    
    • 결과적으로, SQL을 한 번만 실행한다.
  2. DB Isolation Level이 Read Commit이어도 애플리케이션에서 Repeatable Read 보장

2) 트랜잭션을 지원하는 쓰기 지연(transactional write-behind) - 버퍼링 기능

  1. [트랜잭션]을 commit 할 때까지 INSERT SQL을 메모리에 쌓는다.
    • 이렇게 하지 않으면 DB에 INSERT Query를 날리기 위한 네트워크를 3번 타게 된다.
  2. JDBC Batch SQL 기능을 사용해서 한 번에 SQL을 전송한다.
    • JDBC Batch를 사용하면 코드가 굉장히 지저분해진다.
    • 지연 로딩 전략(Lazy Loading) 옵션을 사용한다.
  1. UPDATE, DELETE로 인한 로우(ROW)락 시간 최소화
  2. 트랜잭션 커밋 시 UPDATE, DELETE SQL 실행하고, 바로 커밋

3) 지연 로딩(Lazy Loading)

6. 데이터 접근 추상화와 벤더 독립성

7. 표준


관련된 Post

Reference