자바 ORM 표준 JPA 프로그래밍(인프런)

Ch01. JPA 소개 - JPA 소개

webmaster 2022. 4. 24. 00:42
728x90

JPA?

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

ORM?

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

JPA 아키택쳐

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

저장

JPA 저장

조회

JPA 조회

JPA는 표준 명세

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

JPA를 왜 사용해야 하는가?

  • SQL 중심적인 개발에서 객체 중심으로 개발
  • 생산성

JPA가 자동으로 쿼리를 만들어준다.

  • 유지보수

더이상 Update를 할때 쿼리를 작성할 필요 X

패러다임의 불일치 해결

    • 상속

JPA에 영속화만 시키면 JPA가 알아서 부모 테이블에 데이터를 저장, 조회 한다.

    • 연관관계

객체 그래프 탐색을 자유롭게 가능하도록 한다.

    • 신뢰할 수 있는 엔티티

지연로딩 기능을 통해 get을 하면 쿼리를 실행해 준다.

  • 비교하기

동일한 트랜잭션에서 조회한 엔티티는 같음을 보장한다.

  •  성능

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