Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Android
- JPQL
- Thymeleaf
- Exception
- 김영한
- 인프런
- Proxy
- 스프링 핵심 원리
- SpringBoot
- 스프링
- spring
- jpa
- 백준
- Greedy
- springdatajpa
- JDBC
- Spring Boot
- transaction
- QueryDSL
- java
- 자바
- db
- Servlet
- 알고리즘
- kotlin
- http
- 스프링 핵심 기능
- 그리디
- pointcut
- AOP
Archives
- Today
- Total
개발자되기 프로젝트
영속성 컨텍스트 본문
1. JPA에서 가~~장 중요한 두 가지
- 객체와 관계형 데이터베이스 매핑
(Object Relational Mapping) - 💥영속성 컨텍스트
2. EntityManagerFactory와 EntityManager
3. Persistence Context(영속성 컨텍스트)
- JPA를 이해하는데 가장 중요한 용어
- "엔티티를 영구 저장하는 환경"이라는 뜻
- EntityManager.persist(entity) : 영속성 컨텍스트를 통해서 엔티티를 영속화
- 즉 엔티티를 영속성 컨텍스트에 저장. - 논리적인 개념
- 눈에 보이지 않음
- EntityManager를 통해 Persistence Context에 접근
- 영속성 컨텍스트와 Transaction의 주기를 맞춰 설계해야 함.
- Transaction이 시작하고 끝나면 영속성 컨텍스트도 동일하게 시작하고 끝나야함.
4. Entity의 생명주기
- 비영속(new/transient)
- 영속성 컨텍스트와 전~혀 관계가 없는 새로운 상태. new()로 만든 엔티티 - 영속(managed)
- 영속성 컨텍스트에 관리되는 상태 - 준영속(detatched)
- 영속 컨텍스트에 저장되어있다가 분리된 상태 - 삭제(removed)
- 삭제된 상태
5. 비영속
- 객체를 생성 만 한 상태
- 영속성 컨텍스트에 아무것도 안함.
- JPA랑 전~혀 관계 없는 상태
6. 영속
- 객체를 생성하고 em.persist(entity)한 상태.
//비 영속상태, 객체 생성한 상태
Member member = new Member();
member.setId(100L);
member.setName("BBB");
//영속상태
em.persist(member);
- persist, 영속화 한다고 해서 DB에 바로 쿼리가 날라가는 것 이 아님.
- 쿼리가 날라가는 시점은 trnsaction.commit 시점
- 영속 상태는 1차 캐시에 올라가 있는 상태, persist(entity)로 1캐시에 들어간 상태.
- 또는 find 조회 시 1차 캐시에 없어서 DB에서 조회후 1차 캐시에 저장한 상태.
7. 준영속, 삭제
- 준영속(detatched) : 영속성 컨텍스트에서 분리. 영속성 컨텍스트에서 관리 안함.
- 동일 transaction 내에서 새로 만든 객체(비영속)에 영속상태 객체의 PK, 및 data를 넣으면
준영속 상태임.
em.detatch(entity)
- 삭제 : 객체를 삭제한 상태
em.remove(entity)
8. 영속성 컨텍스트의 이점
- 1차 캐시
- 동일성(identity) 보장
- Trnasaction을 지원하는 쓰기 지연
- 변경감지(dirty checking)
- 지연 로딩(lazy loading)
'인프런 > [인프런] 자바ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
플러시, 준영속 상태, 정리 (0) | 2021.08.08 |
---|---|
영속성 컨텍스트 2 (0) | 2021.08.08 |
Hello JPA (0) | 2021.08.08 |
JPA 시작, 프로젝트 세팅 (0) | 2021.08.07 |
JPA? (0) | 2021.08.07 |
Comments