내일배움캠프 #20 #Spring 6일차

김한준 Hanjun Kim·2023년 11월 7일
0

내일배움캠프

목록 보기
20/70

팀 프로젝트 피드백

팀 프로젝트 피드백을 봤는데, 결과가 아쉬웠다.

잘한점이 한 문장도 없었어서..

아무래도 한번 갈아엎기도 했고.. 라고 생각을 해보려고 한다.

그래도 피드백 내용은 개발자로써 기본적으로 신경써야 하는 부분이라고 생각된다.

static 사용 방법 / private / 분기 처리 / HashMap 초기화 같은 메모리 정리 / 클래스명

등등 뼈가 아파오는 기본기들인데 너무 미숙하게 코드를 짜고 확인을 거치지 않았다고 생각한다.

피드백이니까 위의 단점을 고쳐서 내것으로 만들어보자!


학습 정리

팀 프로젝트 소스를 보느라 진도를 거의 나가지 못하였다.

내일~금요일 까지 해서 개인과제 나오기 전에 학습 마무리 하려고 한다.

아 그리고, 개인과제 질문 당시 jpa 에 대한 부분도 있었는데 이것도 찾아봐야겠다.

영속성 컨텍스트 ( 이어서 )

  • em.find(찾고싶은 Entity 클래스의 타입, 식별자 = PK)

  • Entity를 삭제를 하려면, 우선 DB에 있는지 조회해서 영속성 컨텍스트에 가져온다
    그리고 바로 삭제되는게 아니라 'DELETED' 라는 태그를 붙여놓는다
    마지막에 'commit' 까지 해주면 마무리

--- 1차 캐시 ---

  • 쓰기 지연 저장소(Action Queue)
    말 그대로 저장하기 전 대기? 느낌

  • Flush
    em.commit() 안에는 사실 em.flush()가 포함되어 있다
    영속성 컨텍스트에 변경 내용들을(Action Queue) DB에 요청해주는 메서드 = insert

! 데이터를 조작하는 기능을 수행하려면 트랜잭션 환경이 "필수" 이다!

  • ! 변경 감지 확인
    em.update는 없다.
    데이터 변경 로직 :
  1. 일단 조회한다 ( 최초 조회 상태)
  2. 수정하면 최초 조회 상태와 현재상태를 비교해서 변경을 감지
  3. update SQL 생성, 쓰기 지연 저장소에 저장
  4. commit되면 변경사항 적용
  • 영속성 컨텍스트의 기능
  1. 1차 캐시 : Map자료구조, 효율적으로 데이터 저장
  2. 쓰기 지연 저장소 : Transaction처럼 데이터를 대기시키고 있다가 한번에 적용
  3. 변경 감지 : 최초 상태 저장, 현재와 비교해서 변경내용 있다면 update 쿼리. commit - Flush 할 때 비교한다
profile
개발이 하고싶은 개발지망생

0개의 댓글