Spring Framework/[인프런] Java ORM 표준 프로그래밍 - JPA

Chapter 01. JPA 소개

계란💕 2022. 9. 2. 12:25

1.1 SQL 중심적인 개발의 문제점

 

문제점

  • 관계형 데이터베이스를 쓰면서 SQL에 의존적인 개발을 피하기 어렵다.
  • 패러다임의 불일치
    • 객체(속성과 기능을 캡슐화해서 쓰는 게 목표) vs  관계형 데이터베이스(데이터 정교화 및 보관)

 

 

객체를 영구 보관하는 다양한 저장소

  • RDB - 관계형 데이터베이스
  • NoSQL - 비관계형 데이터베이스
  • File
  • ODB

 

 

객체와 관계형 데이터베이스의 차이

  • 객체 - RDB
    • 상속 - Table 슈퍼타입 서브타입 관계
    • 연관 관계: 객체는 참조 사용(ex. get) - 테이블은 외래 키 사용 (pk - fk 조인)
      • 객체는 단방향, 테이블은 양방향 조회 가능하다.
    • 데이터 타입
    • 데이터 식별 방법

 

 

 

1.2 JPA (Java Persistence API)소개

 

JPA(Java Persiatence API)란?

  • Java Persiatence API: 자비 진영의 ORM 기술 표준을 말한다.
    • ORM(Object Relational mapping, 객체 관계 매핑)
      • 객체는 객체대로 설계하고 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다.
      • ORM 프레임워크가 객체와 관계형 데이터베이스  중간에서 매핑한다.
      • 대중적인 언어에는 대부분 ORM 기술이 존재한다.

 

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

 

JPA 동작 - 저장

 

JPA 동작 - 조회

 

 

JPA는 표준 명세

  • JPA는 인터페이스 모음이다.
  • JPA 2.1 표준 명세를 구현한 3가지 구현체: 하이버네이트(Hibernate), EclipseLink, DataNucleus
  • JPA를 사용하는 이유는?
    • SQL 중심 보다는 객체 중심으로 개발하기 위해서
    • 장점: 생산성, 유지보수, 패러다임의 불일치 해결, 성능, 데이터 접근 추상화와 벤더 독립성, 표준

 

 

JPA의 성능 최적화 기능

 

  • 1차 캐시와  동일성(Identity) 보장
    • 같은 트랜잭션 안에서는 같은 엔티티를 반환한다.
    • 일반적으로 트랜잭션이 시작하고 종료할 때까지 1차 캐시가 유효하다.
    • DB isolation level Read commit이어도 애플리케이션에서 Repeatable Read를 보장한다.
    • ex) jpa.find()를 두 번 실행하는 경우  SQL을 1번만 실행한다.

 

  • 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)
    • 버퍼링 기능을 말한다.
    • 트랜잭션을 커밋할 때까지 INSERT SQL을 모은다.
    • JDBC BATCH SQL 기능을 사용해서 한 번에 SQL을 전송한다.
<hide/>
transaction.begin();	// 트랜잭션 시작
em.persist(mamberA);
em.persist(mamberB);
em.persist(mamberC);	// INSERT SQL 대기 상태
transaction.commit();	// 커밋하는 순간 A, B, C를 몰아서 한번에 보낸다.

 

  • 지연 로딩(Lazy loading)
    • 지연 로딩: 객체가 실제 사용될 때 로딩, 지연 로딩의 문제점: 쿼리가 두 번 날아간다.
    • 즉시 로딩: JOIN SQL로 한번에 연관된 객체끼리 미리 조회한다. JPA에 있는 옵션을 켜면 멤버와 팀에 대해 미리 저장된 정보를 항상 함께 가져온다.

 

 

 

 

 

출처 - https://www.inflearn.com/course/ORM-JPA-Basic

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com