한화시스템/회고

[045] 피로 속에서도 배우는 Persistence Context

jjam-mo 2024. 8. 21. 23:39

한화시스템 BEYOND SW 캠프 9기 45일차
2024.08.21_수

 

역대급으로 피곤한 날이었다.

그저 눈만 뜰 뿐...계속 눈만 뜰 뿐...

그렇다...감겨지는 눈을 계속 뜨기만 할 뿐이다.

내가 언제 눈을 감았는지도 모른다. 눈을 뜬 것만 기억난다.

오전에는 괜찮았는데, 오후에는 정말 힘들었다.

프로젝트에 수업에 자격증 공부까지...

솔직히 힘들지 않을래야 힘들지 않을 수가 없다.

 

더 피곤한 이유는 요즘 다시 런닝을 시작했기 때문이다!

오늘은 런닝을 안나가긴 했지만

꾸준히 나가볼 생각이다! 초반에는 피곤하겠지만 꾸준히 하면 체력 길러진다!

조금만 참고 꾸준히 해보자!

 

오늘 수업은..!!

jpa에서 persistence context에 대해서 배웠다.

제일 중요한 그림!

 

위의 그림을 설명할 수 있으면 된다고 하셨다!

대충 설명해보자면..

 

EntityManager(이하 em)를 만드는 Factory를 `@BeforeAll`을 사용해서 싱글톤으로 만들고

`@BeforeEach`로 em을 만들어서 사용한다.

메소드를 쓰기 전에 em을 새로 만들어야하기 때문이다.

이러한 em이 새로운 entity를 다루고(그림에서 왼쪽 위)

그렇게 다루어지는 entity가 Persistence Context에서 다뤄지고 있다.(그림에서 가운데)

또한 다뤄지는 entitiy는 스냅샷을 찍고 원본과 스냅샷이 달라지면 '쓰기 지연 SQL 저장소'에 쿼리가 저장된다.

flush나 commit을 하면 DB에 쿼리가 실행되고 적용이 되어진다.

또한 관리되어졌던 해당 값은 commit 시 없어진다.

관리되어지는 entity를 삭제하면(그림에서 왼쪽 아래) 비영속이 되어지고 DB에서 해당 값이 지워진다.

비슷하게 detach, clear, close를 하면 준영속이 되어지고 DB에서 값은 없어지지 않는다.

준영속이 되어있는 상태에서 값이 바뀌고 merge를 하게되면 스냅샷과 다르기 때문에 스냅샷을 찍고

달라진 부분을 쿼리로 '쓰기 지연 SQL 저장소'에 저장된다.

대충 이런 느낌이다.

 

이것도 또한 중요한 그림이다!

 

하브루타 없었으면 난 진짜 힘들었을 것 같다...

하브루타 ㅠㅠㅠ땡큐!!!

 

SQLD도 막막하다...어제 딱 1회독 하긴 했는데 그러고 오늘 아침부터 해서 오늘 오답까지

어느정도 끝냈다...

아직 시간 많으니까 해보자구!! 충분히 할 수 있다!!

3일만에도 붙는다던데 하면 되겄지?!?!

파이팅!!