• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

EntityManager, Entity, 영속성 컨텍스트 관계에 관해서 질문 드립니다.

20.02.11 22:11 작성 조회수 139

2

안녕하세요 김영한 강사님!

강사님의 하이버네이트 강의를 통해 잘 배우고 있는 주니어 개발자입니다.

강의는 거의 후반부에 접어 들고 있는데 문득 개념적으로 헷갈려서 질문 드립니다.

1) EntityManager(구현체)라는 것은 Entity와 1:1로 매핑되는 개념인가요? 

2) 이 때 Entity를 EntityManager가 내부적으로 포함(가지고있는) 하여 컨트롤 하는 구조인가요?

     (또는 하나의 EntityManager가 여러 Entity를 관리하는 관계인가요?)

3) 논리적 개념이라는 영속성 컨텍스트는 EntityManager와 1:1 관계라고 이해하면 되는건가요?

4) 영속성 컨텍스트의 생명주기가 어떤걸 기준으로 이루어 지나요? 해당 메소드 인가요?

바쁘시겠지만 EntityManager, Entity, 영속성 컨텍스트 이 세개가 어떠한 구조로 어떻게 제어 하는 관계인지

구체적으로 설명부탁드리겠습니다. 너무나 기초적인 질문 죄송합니다..

답변 4

·

답변을 작성해보세요.

2

아! 네 이해했습니다.

친절한 답변 너무 감사드려요 ㅎㅎ

오늘 하루도 수고하셨습니다~

0

EntityManager는 Entity들을 자바의 Map 과 유사한 구조로 내부에 가지고 있으면서 핸들링 합니다. 여기서 key가 Entity의 Id가 되고, Value가 Entity 객체 인스턴스가 되는 것이지요^^

0

빠른 피드백 감사드립니다! 

그렇다면 EntityManager는 Entity들을 의존객체처럼 직접 내부에 가지고 있으면서 핸들링을 한다고 보면 맞는 걸까요??

0

안녕하세요 jaenyeong kim님^^

저도 처음에 정말 힘들었습니다. 충분히 이해합니다^^!

질문에 대한 답을 우선 드릴께요.

1, 2 엔티티매니저는 여러 엔티티를 관리할 수 있습니다.

3. 영속성 컨텍스트와 엔티티 매니저는 지금은 1:1 관계라고 이해하시면 됩니다. (향후 스프링 프레임워크와 함께 사용할 때는 는 여러 엔티티 매니저가 같은 영속성 컨텍스트에 접근할 수 있습니다. 그런데 이걸 이해하려면 스프링과 함께 돌려봐야 하기 때문에 지금은 이해하기 어렵습니다. 지금 처럼 순수 자바 환경에서는 1:1이 맞습니다.)

4. 영속성 컨텍스트는 사실 생명주기라는 개념이 따로 없습니다. 엔티티 매니저 팩토리를 통해서 생성하는 순간 나오고, GC 될때 종료됩니다. 반면에 엔티티는 생명주기가 있습니다.

강의 영속성 컨텍스트1, 영속성 컨텍스트2를 다시 한번 들어보시면 어느정도 감이 잡히실 꺼에요.

그래도 개념적으로 어려우시면 우선은 활용1편을 진행하고 다시 듣는 것을 권장드립니다. (실제 활용하는 코드를 보면 이런 개념이 더 쉽게 이해됩니다.)

감사합니다. :)