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
- 플러시
- JPA
- Spring
- DB
- Algorithm
- fetch join
- commit
- Amortized Analysis
- 분할상환분석
- 고아객체
- DiscriminatorColumn
- 관계형 데이터베이스
- relational DB
- n+1문제
- relational database
- Spring Data JPA
- 영속성 컨텍스트
- 순수jpa
- 영속성전이
- MappedSuperclass
- 즉시로딩
- 지연로딩
- Flush
- 페치조인
- 엔티티 매핑
- DiscriminatorValue
- 정렬
- ROLLBACK
- 값타입
- Embeddable
Archives
- Today
- Total
Jun's note
[JPA] 영속성 컨텍스트 개념, 이점 본문
728x90
JPA에서 가장 중요한 2가지
- 객체와 관계형 데이터베이스 매핑하기
- 영속성 컨텍스트
1. 영속성 컨텍스트란?
- “엔티티를 영구 저장하는 환경”이라는 뜻
- 엔티티 매니저를 통해서 영속성 컨텍스트에 접근
- EntityManager.persist(entity); (-> 이를 통해 영속상태가 됨)
- JPA 안에 존재
2. 영속성 컨텍스트 이점
- 1차 캐시
- 동일성(identity) 보장
- 트랜잭션을 지원하는 쓰기 지연
- 변경 감지(Dirty Checking)
- em.update() 는 없음. 대신 set메서드를 통해 값을 수정
- 스냅샷을 통해 값이 변경 되었는지 감지한다. (스냅샷에는 가장 처음 값이 저장됨)
- 스냅샷과 값이 다르면, 3번 과정인 update 쿼리를 쓰기 지연 SQL 저장소에 생성한다.
- 지연 로딩(Lazy Loading)
3. 플러시 (flush)
- 영속성 컨텍스트의 변경내용을 데이터베이스에 반영 (영속성 컨텍스트의 변경내용을 데이터베이스에 동기화)
- 쉽게말하면, 쓰기 지연 SQL 저장소가 DB로 쿼리날리는 것이다.
- 영속성 컨텍스트를 비우지 않는다.
- 트랜잭션이라는 작업 단위가 중요 -> 커밋 직전에만 동기화 하면 됨
- 플러시 방법
- em.flush() - 직접 호출
- 트랜잭션 커밋 - 플러시 자동 호출
- JPQL 쿼리 실행 - 플러시 자동 호출
참고
강의 : www.inflearn.com/course/ORM-JPA-Basic
서적 : <자바 ORM 표준 JPA프로그래밍> 김영한
'Programming > JPA' 카테고리의 다른 글
[JPA] 상속관계매핑, @MappedSuperclass (0) | 2022.01.14 |
---|---|
[JPA] 다양한 연관관계 매핑 (다대일, 일대다, 일대일, 다대다) (0) | 2022.01.13 |
[JPA] 엔티티(Entity), 연관관계 매핑 (0) | 2022.01.13 |
[JPA] JPA 동작 과정과 장점 (0) | 2022.01.13 |
[JPA] JPA, ORM, Spring Data JPA 란? (0) | 2022.01.13 |
Comments