티스토리 뷰

반응형
  • 영속성 컨텍스트?
    • JPA
      • 객체 - ORM - DB
      • 객체 - 영속성 컨텍스트 매니져 (entity context manager) - DB
    • 영속성 컨텍스트 매니져
      • 객체 ↔ DB 의 소통을 효율적으로 관리
    •  PK (Primary Key)
      • 테이블에서 각 row 마다 가져야 하는 유일무이한 값 (중복,Null 허용되지 않음)
      • 샘플

  • 자연키 vs 인조키
    • 자연키: USERNAME, EMAIL
    • 인조키: ID
    • 보통 테이블 ID 를 PK 로 설정 (인조키)

JPA 영속성 컨텍스트 1차 캐시 이해

  • Entity 저장 시


  • Entity 조회 시
    • 1차 캐시에 조회하는 Id 가 존재하는 경우


  • 1차 캐시에 조회하는 Id 가 존재하지 않은 경우


'1차 캐시' 사용의 장점

  1. DB 조회 횟수를 줄임
  2. **'1차 캐시'**를 사용해 DB row 1개 당 객체 1개가 사용되는 것을 보장 (객체 동일성 보장)
    • 비교) '1차 캐시'가 작동하지 않을 때
      • 만약 DB 에서는 'user1' 회원 1명, 자바 객체로는 'user1' 회원 3명이라면??
      • 그리고, 각 객체 회원별로 수정한다면.. 어떤 'user1' 이 맞는걸까??

Entity 삭제

 


Entity 업데이트 실패

  • Entity 객체를 수정해도 DB 에는 update 가 되지 않음

  • 1차 캐시 Entity 객체에만 업데이트 반영됨
  • User DB 에는 반영되지 않음
  • 객체와 DB 값 불일치 확인(java 안의 1차 캐시의 값은 병경 되었으나 DB값은 변경되지 않았다.)

    1. Entity 업데이트 방법 (1)
    • userRepository.save() 사용


    1. Entity 업데이트 방법 (2)
    • @Transactional 을 추가
    • 굳이 userRepository.save() 함수를 호출하지 않아도, 함수가 끝나는 시점에 변경된 부분을 알아서 업데이트 해 줌 (이를 "Dirty check" 라고 함)
    • 간단히 함수가 종료되는 시점에 각 Entity 에 save() 가 호출된다라고 이해
반응형

'개발일지 > TIL' 카테고리의 다른 글

JPA 연관관계, Spring Dada JPA  (0) 2022.07.18
DB의 연관관계 이해  (0) 2022.07.18
JPA 이해  (0) 2022.07.18
JPA  (0) 2022.07.17
Getter, Setter의 이해  (0) 2022.07.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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 31
글 보관함