JPA 소개

slee2·2022년 2월 16일
0

JPA

  • Java Persistence API
  • 자바 진영의 ORM 기술 표준

ORM

  • Object-relational mapping(객체 관계 매핑)
  • 객체는 객체대로
  • 관계형 데이터베이스는 관계형 데이터베이스대로 설계
  • ORM 프레임워크가 중간에서 매핑
  • 대중적인 언어에는 대부분 ORM 기술이 존재

JPA는 애플리케이션과 JDBC 사이에서 동작

JPA 동작 - 저장

JPA 소개

EJB - 너무 쓰기 불편했음
이거 쓰던 분이 너무 열받아서 하이버네이트 만듬
자바 진영에서 반성을 함.
하이버네이트를 거의 복사하듯이 붙여서 다듬어 만든게 JPA

JPA는 표준 명세

  • JPA는 인터페이스의 모음
  • JPA 2.1 표준 명세를 구현한 3가지 구현체
  • 하이버네이트, EclipseLink, DataNucleus

JPA를 왜 사용해야 하는가?

생산성

  • 저장: jpa.persist(member)
  • 조회: Member member = jpa.find(memberId)
  • 수정: -member.setName(“변경할 이름”)
  • 삭제: jpa.remove(member)

유지보수

기존: 필드 변경시 모든 SQL 수정

JPA: 필드만 추가하면 됨

JPA와 패러다임의 불일치 해결

  1. JPA와 상속
  2. JPA와 연관관계
  3. JPA와 객체 그래프 탐색
  4. JPA와 비교하기

상속

연관관계, 객체 그래프 탐색

신뢰할 수 있는 엔티티

비교하기

최적화 기능

  1. 1차 캐시와 동일성(identity) 보장
  2. 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)
  3. 지연 로딩(Lazy Loading)

1차 캐시와 동일성 보장

  1. 같은 트랜잭션 안에서는 같은 엔티티를 반환 - 약간의 조회 성능 향상
  2. DB Isolation Level이 Read Commit이어도 애플리케이션에서 Repeatable Read 보장

트랜잭션을 지원하는 쓰기 지연

  1. 트랜잭션을 커밋할 때까지 INSERT SQL을 모음
  2. JDBC BATCH SQL 기능을 사용해서 한번에 SQL 전송

  1. UPDATE, DELETE로 인한 로우(ROW)락 시간 최소화
  2. 트랜잭션 커밋 시 UPDATE, DELETE SQL 실행하고, 바로 커밋

지연 로딩과 즉시 로딩

  • 지연 로딩 : 객체가실제사용될때로딩
  • 즉시 로딩 : JOIN SQL로 한번에 연관된 객체까지 미리 조회

ORM은 객체와 RDB 두 기둥위에 있는 기술

0개의 댓글