일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- 프로그래머스
- 면접(java
- Java
- wil
- 99클럽
- 회고
- 코딩공부
- 자료구조
- 메서드
- 자바
- 개발자 취업
- 항해99
- 코딩테스트 준비
- 코딩
- 우선순위 큐(priorityqueue)
- Til
- Grafana
- Spring
- Entity
- 코딩문제
- cs 공부)준비
- ArrayList
- 이진 탐색(binary search)
- 배열
- GIT
- aop
- github
- HTML
- 정렬 알고리즘(sort algorithm)
- css
- Today
- Total
hayu's 개발 일지
[TIL]240307 영속성 컨텍스트 본문
영속성 컨텍스트란?
- 영속성 컨텍스트는 JPA에서 사용되는 개념 중 하나이며, 엔티티(Entity) 객체를 영구 저장하고 데이터 베이스와 상호작용한다.
엔티티의 생명주기
- 비영속(new/transient): 영속성 컨텍스트와 관계가 없는 새로운 상태이다.
- 영속(managed): 영속성 컨텍스트에 관리되는 상태이다.
- 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된 상태이다.
- 삭제(remove): 삭제된 상태이다.
영속성 컨텍스트의 특징
- 영속성 컨텍스트는 엔티티를 식별자 값으로 구분한다. 영속 상태는 식별자 값이 있어야 한다.
- JPA 는 트랜잭션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 엔티티를 데이터 베이스에 반영한다.
+ 트랜잭션: 데이터 베이스의 상태를 변화시키는 작업이다. 여러 개의 데이터 베이스 조작 명령문(쿼리)이 모여서 한번에 실행되는 것을 말한다.
영속성 컨텍스트의 장점
- 1차 캐시: 영속성 컨텍스트 내부의 캐시를 1차 캐시라 한다. 1차 캐시에 영속 상태의 엔티티를 저장한다. 1차 캐시의 키는 식별자 값이고 값은 엔티티 인스턴스이다.
- 동일성 보장: 엔티티의 동일성을 보장한다.
- 트랜잭션을 지원하는 쓰기 지연: 트랜잭션을 커밋하기 전까지 내부 쿼리 저장소에 모아준다. 트랜잭션을 커밋할 때 모아둔 쿼리를 DB에 보낸다.
- 변경 감지: JPA로 엔티티를 수정할 때는 엔티티를 조회해서 데이터를 변경하면 된다. 변경 감지는 영속성 컨텍스트가 관리하는 영속 상태의 엔티티만 적용된다.
- 지연 로딩: 연관된 엔티티를 실제로 필요한 시점에 데이터베이스에서 가져온다. 즉 엔티티의 데이터를 즉시 로드하지 않고, 필요한 시점에만 데이터 베이스로부터 가져온다.
회고
- 영속성 컨텍스트의 개념에 대해 알아보았다. 하지만 더 이해하기 위해서는 예시 코드를 많이 봐야 할 것 같다. 추후에 예시 코드를 계속 작성해보면서 공부해봐야겠다.
'프레임워크 > spring' 카테고리의 다른 글
[TIL]240313 Builder Pattern (0) | 2024.03.13 |
---|---|
[TIL]240312 트랜잭션(transaction) (0) | 2024.03.12 |
[TIL]240308 트러블 슈팅: 로그인 성공 메세지 (0) | 2024.03.08 |
[TIL]240304 스프링 MVC 와 Front Controller (0) | 2024.03.04 |
[TIL]240302 IoC / DI (0) | 2024.03.02 |