BackEnd/Spring Boot

영속성 이란?

Raconer 2023. 5. 21. 13:03
728x90

작성 계기

JPA에서 영속성이라는 개념이 중요 하다고 생각한다.
그래서 영속성에 관한 내용만 따로 간단하게 나마 정리를 한다.

영속성 이란?

내가 이해한 영속성은 이러하다.

  1. 객체를 메모리에서 DB에 저장 하거나 DB에서 메모리로 로드 하는 과정
  2. 메모리
    • 메모리는 JVM Heap Memory에 저장이 된다.
    • 1차 캐쉬
      • Request 가 종료되면 삭제 된다.
    • 2차 캐쉬
      • Request가 종료 되면 삭제 되지 않는다.
      • 종료 시점을 설정할수있다.

DB에서 데이터를 가져올때 캐쉬에 저장 되며 로직 실행중에 같은 데이터가 필요하면 DB에 접근이 아니라 캐쉬에서 먼저 가져와 데이터를 변경한다.

1차 캐쉬 & 2차 캐쉬 장단점

  1. 1차 캐쉬
  • 장점
    • JVM Heap 메모리에 위치 하여 접근 속도가 빠르다.
    • 동일한 Transaction내에서 반복적인 DB 접근을 피할수 있어 성능이 좋다.
    • 영속성 컨텍스트의 생명 주기와 일치하여 Transaction 커밋시 변경사항을 효율적으로 관리 할수있다.
  • 단점
    • Transaction 범위 내에서만 유효 하여 여러 Transaction에서는 공유 되지 않는다.
    • 메모리 사용량이 증가 할수 있어, 큰 규모의 어플리케이션에선느 메모리 관리가 필요한다.
    • 분산 환경에서 동기화 문제가 발생할수 있다.
  1. 2차 캐쉬
  • 장점
    • 여러 Transaction간에 공유 될수 있어, 동일한 데이터에 대한 접근 성능이 향상된다.
    • 분산 환경에서 여러 서버간에 캐시를 공유 할수 잇다.
  • 단점
    • DB와 일관성에 유지에 주의 해야하며, 캐시와 DB동기화에 문제가 생길수 있다.
    • 캐시 갱신과 DB 갱신에 불일치 문제를 주의 하여한다.
    • 캐시 사용을 위한 추가적인 설정과 관리가 필요하며 복잡성이 증가 될수 있다.
728x90

'BackEnd > Spring Boot' 카테고리의 다른 글

JPA 적응기_1  (0) 2023.05.21
JPA란?  (0) 2023.05.21
JPA Entity 작성_1 (공통, 같은 테이블)  (0) 2023.05.15
jasypt 설정 하기  (0) 2023.05.01
jasypt 란?  (0) 2023.05.01