[JPA] JPA 책 읽고, 개념 정리

Carrot.___.·2024년 3월 5일
0

- 이글은 JPA 프로그래밍 책을 읽고 정리한 내용입니다.

JPA 장점

  • 반복되는 작업을 줄일 수 있음 (-> SQL 작성 및 조회한 데이터와 객체를 매핑하는 추가작업 등)
  • 패러다임의 불일치 해결 가능(-> 객체 중심의 사고 확장 가능, 객체 중심의 탐색 가능)
  • 툭정 구현 기술에 대한 의존성을 줄일 수 있음

JPA란?

  • 자바 ORM 기술 표준

    ORM? : 객체와 관계형 데이터베이스를 매핑하여, 패러다임의 불일치 문제를 해결)


JPA를 사용해야하는 이유

  1. 생산성 : 반복적인 SQL 작성 등의 작업을 줄일 수 있음
  2. 유지보수 : SQL의존 개발과 달리 필드 수정과 같은 작업이 발생하면 변경이 용이
  3. 패러다임 불일치 해결 : 객체지향 관점에서 상속, 연관관계, 그래프 탐색 등 패러다임 불일치 문제 해결
  4. 성능 : 영속성 컨텍스트를 활용하여, 캐싱을 통해 성능 향상 가능
  5. 데이터 접근 추상화와 벤더 독립성 : 벤더에 독립적, 변경이 용이

영속성 컨텍스트

  • 엔티티를 저장하는 1차 캐시 환경

특징

  • 영속성 컨텍스트와 식별자 값 : @Id 식별자 값 바탕으로 구분
  • 영속성 컨텍스트와 데이터베이스 저장 : 플러시 발생 시, 데이터베이스 반영

장점

  • 1차 캐시 : 영속성 컨텍스트 내의 메모리로부터 데이터를 조회후 반환 (@Id를 통한 조회 시)
  • 동일성 보장 : 영속성 컨텍스트 내에서 조회 시, 동일한 객체를 반환함으로써 동일성(==)비교 보장
  • 트랜잭션을 지원하는 쓰기 지연 : 커밋시점 전까지 INSERT SQL을 모아두고(쓰기 지연 SQL 저장소에 모아둠), 커밋 시(flush 호출), 데이터베이스에 보냄으로써, 쓰기지연 가능
  • 변경 감지 : 엔티티의 변경 사항을 데이터베이스에 반영 (-> 엔티티와 스냅샷(=최초상태)을 비교하여,쓰기 지연 SQL 저장소에 모아두고, 커밋시 반영
  • 지연 로딩 : 영속 상태의 엔티티와 연관된 엔티티는 지연하여 로딩할 수 있음

0개의 댓글