728x90
작성 계기
JPA에서 영속성이라는 개념이 중요 하다고 생각한다.
그래서 영속성에 관한 내용만 따로 간단하게 나마 정리를 한다.
영속성 이란?
내가 이해한 영속성은 이러하다.
- 객체를 메모리에서 DB에 저장 하거나 DB에서 메모리로 로드 하는 과정
- 메모리
- 메모리는 JVM Heap Memory에 저장이 된다.
- 1차 캐쉬
- Request 가 종료되면 삭제 된다.
- 2차 캐쉬
- Request가 종료 되면 삭제 되지 않는다.
- 종료 시점을 설정할수있다.
DB에서 데이터를 가져올때 캐쉬에 저장 되며 로직 실행중에 같은 데이터가 필요하면 DB에 접근이 아니라 캐쉬에서 먼저 가져와 데이터를 변경한다.
1차 캐쉬 & 2차 캐쉬 장단점
- 1차 캐쉬
- 장점
- JVM Heap 메모리에 위치 하여 접근 속도가 빠르다.
- 동일한 Transaction내에서 반복적인 DB 접근을 피할수 있어 성능이 좋다.
- 영속성 컨텍스트의 생명 주기와 일치하여 Transaction 커밋시 변경사항을 효율적으로 관리 할수있다.
- 단점
- Transaction 범위 내에서만 유효 하여 여러 Transaction에서는 공유 되지 않는다.
- 메모리 사용량이 증가 할수 있어, 큰 규모의 어플리케이션에선느 메모리 관리가 필요한다.
- 분산 환경에서 동기화 문제가 발생할수 있다.
- 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 |