영속성 컨택스트에 대한 이해
안녕하세요, 고생많으십니다.
혼자 독학하는 입장에서, 제가 정확히 이 영속성 컨텍스트를 이해한것이 맞는지 확인차 질문 남겨봅니다.
먼저, entitymanager를 사용하기 위해서는 tx안에서만 사용 가능하며 tx 안에서 em을 통해 entity 객체를 관리 하면서 만들어지는 가상 공간, 즉 1차 캐시가 영속성 컨텍스트라고 이해했습니다.
entity manager를 통해 persist나 find등의 메소드를 통해서 managed 상태로 entity객체를 만들어 주면,
1차 캐시에 저장하게 되고,
해당 메소드에 따른 sql문이 쓰기 지연 sql 저장소에 쌓이게 되며,
tx.commit()이 호출되어 tx가 커밋되는 시점에 flush()가 자동 호출되어,
flash()시 snapshot과 현재 entity 객체 상태를 비교를 통해 다르면 update query가 쓰기 지연 저장소에 쌓이게 되고,
db에 반영이 되고난 후, tx이 커밋되어( tx가 닫힘)걸로 이해했습니다.
궁금한것이
제가 정확하게 이해한것이 맞는지 궁금하며
영속성 컨텍스트(1차 cache)에 있는 엔티티에 대한 정보는 준영속 상태일때에만 삭제되었다고 할수 있는지 궁금합니다.
답변 2
1
안녕하세요. Ju no님, 공식 서포터즈 y2gcoder입니다.
1번 2번 질문 전부 Ju no님이 말씀하신 게 맞습니다. 아시겠지만 혹시나 해서 몇 가지 첨언을 드립니다.
영속성 컨텍스트가 1차캐시 자체는 아닙니다. 영속성 컨텍스트 안에 1차 캐시가 존재한다고 이해해주시면 좋을 것 같습니다.
영속성 상태는 영속, 준영속, 비영속, 삭제 상태가 존재합니다. 정확히 말씀드리자면 영속성 컨텍스트 내의 1차 캐시 내에 있는 엔티티 정보는 영속 상태가 아닐 경우에는 1차 캐시에서 지워진다고 보시면 될 것 같습니다.
감사합니다.
벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?
0
28
2
inheritance startegy 선택시 고려사항
0
22
1
Entity 동등성 비교
0
21
1
실무 조언 관련 질문입니다.
0
47
1
H2데이터베이스 파일 생성
0
56
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
53
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
53
1
JPQL 메소드와 락
0
55
1
Delivery @OneToOne
0
60
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
94
2
UnsupportedOperationException 발생
0
86
3
H2 Database 연결이 안됩니다.
0
95
2
연관관계 매핑 질문드립니다.
0
85
2
h2데이터베이스 실행오류
0
108
2
persistence.xml
0
108
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
80
1
영속성 컨텍스트
0
66
1
JPA 프록시
0
96
1
Native Query와 MyBatis
0
70
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
87
1
임베디드 타입 예시 코드 관련 질문
0
115
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
95
3
인텔리제이 패키지 커서 단축키 질문
0
108
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
145
1





