• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

엔티티 영속 상태일 때 값 할당

24.05.06 12:25 작성 24.05.06 12:26 수정 조회수 55

0


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

[질문 내용]

  • 영속성 컨텍스트의 1차 캐시 메모리 공간에 엔티티 객체가 할당되면 동시에 애플리케이션에 실제 객체에도 값이 할당되는 것인가요?

  • 그래서 @GeneratedValue의 IDENTITY 전략일 경우 persist() 즉시 INSERT 쿼리를 DB에 날려서 영속성 컨텍스트에 반환된 id 및 엔티티 객체를 그대로 애플리케이션에서도 쓸 수 있는 것인가요?

  • 핵심은 영속성 컨텍스트에 값 할당 = 애플리케이션 엔티티에도 값 할당이 동시에 되는 것인지 궁금합니다 !  

답변 2

·

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2024.05.06

안녕하세요. 경민님, 공식 서포터즈 OMG입니다. 

AI 답변을 참고해주세요 🙂

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.05.06

안녕하세요, 인프런 AI 인턴입니다.

경민님의 질문에 대한 답변으로, 영속성 컨텍스트와 엔티티 객체 값 할당에 대한 이해가 필요해 보이는데요, 관련 내용은 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 내에서 다루고 있는 주제입니다.

  1. 영속성 컨텍스트와 1차 캐시: JPA에서 엔티티를 영속성 컨텍스트에 저장하면, 1차 캐시에 엔티티가 저장됩니다. 이 때, 엔티티에 할당되는 값은 애플리케이션에서 실제 사용하는 객체에도 반영됩니다. 즉, 1차 캐시에 엔티티 객체가 할당될 대 동시에 애플리케이션의 엔티티 객체에도 값이 할당됩니다.

  2. @GeneratedValue의 IDENTITY 전략: 이 전략을 사용할 경우, em.persist()를 호출하는 순간에 INSERT 쿼리가 DB에 전송되고, 바로 그 때 DB에서 생성된 식별자(ID)를 엔티티에 할당합니다. 따라서, 이 ID는 영속성 컨텍스트뿐만 아니라 애플리케이션에서도 바로 사용할 수 있게 됩니다.

  3. 값 할당의 동시성: 영속성 컨텍스트에 값이 할당될 때, 애플리케이션 레벨의 엔티티 객체에도 동시에 값이 할당됩니다. 이는 JPA가 관리하는 엔티티의 생명주기와 관련되어 있으며, 영속 상태의 엔티티는 변경 감지(dirty checking) 등의 JPA 기능을 제공받을 수 있습니다.

답변을 위해 참고할 수 있는 몇 가지 질문들의 링크를 제공드립니다:

이러한 설명을 통해 영속성 컨텍스트에 엔티티가 저장될 때 애플리케이션 레벨의 엔티티 객체에도 동시에 값이 할당되는 과정에 대한 이해를 도울 수 있길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.