• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

동일성 보장에서 질문있습니다.

23.11.21 22:02 작성 23.11.21 22:39 수정 조회수 201

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요?예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
동일성 보장에서 들어주신 예시에서 질문이 있습니다.

findMember1과 findMember2의 pk값 즉 영속성 컨텍스트에서 객체의 id값이 동일한데, 이때 캐시에 어떻게 저장이되는지 궁금합니다.
[ id / 객체 ]형식으로 캐시에 저장된다고 하셨는데,

그럼 [101L/findMember1], [101L/findMember2] 이렇게 캐시에 저장이 되는건가요?

캐시에 저장되는 Id값이 캐시 조회시 사용되는 주소값인가요?

캐시에 저장되는 id 값은 중복을 허용하는건가요?

답변 1

답변을 작성해보세요.

0

codesweaver님의 프로필

codesweaver

2023.11.23

안녕하세요. 백지우님, 공식 서포터즈 코즈위버입니다.

Map 형태를 생각하시면 될것 같아요. Key, Value 형태로 데이터를 보관하며 Key 중복을 허용하지 않습니다. 그래서 findMember1()을 실행할 때 회원번호가 101인 객체를 찾았다면 이를 map.put(101L, member); 와 같은 형태로 저장하겠죠. 그리고 이후 fineMember2()에서 데이터베이스에 가기 전, map에 101 키가 있는지 조회하는데요, 이때 101을 찾을 수 있으므로 이 값을 재활용하게 됩니다.

감사합니다.