JPA : 데이터 베이스와의 상호작용을 위한 특징

2024. 10. 8. 15:25·[Spring] - 멘토링/개념

JPA 란 무엇인가?

JPA(Java Persistence API)는 자바 애플리케이션에서 데이터베이스와 상호작용하기 위한 ORM(Object-Relational Mapping) 표준입니다.


데이터베이스와의 상호작용을 위한 주요 특징

 

1. 쓰기 지연 (Write-Behind / Write-Delay)

- 쓰기 지연은 JPA에서 성능을 최적화하기 위해 제공하는 기능입니다.

- 엔터티(객체)에 대한 변경 사항이 즉시 데이터베이스에 반영되지 않고, 트랜잭션이 커밋될 때까지 변경 사항을 보류합니다.

- 즉, 여러 변경 사항을 모아서 한 번에 데이터베이스에 반영하는 방식입니다. -> 데이터베이스와의 상호작용 횟수를 줄여 성능을 최적화할 수 있습니다.

 

2. 더티 체킹 (Dirty Checking)

- 더티 체킹은 JPA가 객체의 상태 변화를 감지하여, 자동으로 데이터베이스에 반영하는 기능입니다.

- 엔터티 객체의 속성 값을 변경하면, JPA는 그 변화를 감지하고, 트랜잭션이 커밋되는 시점에 자동으로 업데이트 쿼리를 생성해 데이터베이스에 반영합니다.

- 개발자가 별도로 update 쿼리를 작성하지 않아도 됩니다.

 

3. 1차 캐시(First-Level Cache)

- 영속성 컨텍스트는 1차 캐시로 동작합니다.

- 동일한 트랜잭션 내에서 동일한 엔터티를 여러 번 조회할 때, 데이터베이스를 다시 조회하지 않고 영속성 컨텍스트에서 캐시된 엔터티를 반환합니다.

- 이를 통해 데이터베이스 접근 횟수를 줄이고 성능을 최적화할 수 있습니다.

 

4. 지연 로딩(Lazy Loading)과 즉시 로딩(Eager Loading)

- 지연 로딩(Lazy Loading): 연관된 엔터티를 필요할 때만 로드합니다. 즉, 데이터가 처음 조회될 때는 로드되지 않고, 해당 연관 객체를 실제로 사용할 때 데이터베이스에서 조회됩니다.

- 즉시 로딩(Eager Loading): 엔터티를 조회할 때, 연관된 엔터티도 함께 로드됩니다. 즉시 로딩은 처음부터 모든 데이터를 가져오므로, 나중에 추가적인 데이터베이스 접근이 필요하지 않습니다.

 

5. JPQL (Java Persistence Query Language)

- JPQL은 SQL과 유사한 구문을 사용하여 엔터티 객체를 대상으로 쿼리를 작성하는 언어입니다.

- 엔터티 클래스와 객체 필드를 대상으로 쿼리를 작성합니다. -> 이를 통해 객체지향적으로 DB와 상호작용 할 수 있습니다. 

 

'[Spring] - 멘토링 > 개념' 카테고리의 다른 글

트랜잭션(Transaction)에 관하여  (0) 2024.10.05
IoC(Inversion Of Control) 컨테이너와 스프링 빈(Bean)  (1) 2024.09.30
의존성 주입(DI)과 주입 방식  (0) 2024.09.30
@Data 어노테이션에 관하여  (0) 2024.09.30
Session 과 Session Login  (0) 2024.09.23
'[Spring] - 멘토링/개념' 카테고리의 다른 글
  • 트랜잭션(Transaction)에 관하여
  • IoC(Inversion Of Control) 컨테이너와 스프링 빈(Bean)
  • 의존성 주입(DI)과 주입 방식
  • @Data 어노테이션에 관하여
moonwhistle
moonwhistle
  • moonwhistle
    OrangeBanana
    moonwhistle
  • 전체
    오늘
    어제
    • 분류 (97)
      • [Spring] - Study (5)
        • CS (5)
        • Project - 모각밥(모여서 각자 밥먹기) (0)
        • 📖 Real MySQL 8.0 (0)
      • 우아한테크코스[프리코스] (15)
      • [Spring] - 멘토링 (30)
        • 미션 (13)
        • 개념 (16)
      • 알고리즘 (2)
      • 💬 생각생각 (1)
        • F-lap (1)
      • 통신 (34)
        • 네트워크 프로토콜 (18)
        • 데이터통신 (16)
      • 용접 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 카테고리
    • 초록스터디
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    베타락
    고립수준
    백엔드코스
    회복기법
    f-lap 1개월 후기
    JIT
    격리수준
    에프랩
    동시성
    멀티스레드
    jit complination
    Java
    에프랩 1개월 후기
    병행제어
    volatile
    공유락
    f-lap
    GC
    Synchronized
    jmm
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
moonwhistle
JPA : 데이터 베이스와의 상호작용을 위한 특징
상단으로

티스토리툴바