Spring Data JPA #2 엔티티(Entity), 엔티티 매니저(Entity Manager)

2021. 10. 1. 14:16JAVA/Spring

본 글은 스타트 스프링 부트 도서의 내용을 복습하기 위해 작성된 글입니다.

1. JPA와 엔티티의 관계

엔티티는 데이터베이스 상에서 데이터로 관리하는 대상을 의미합니다. 예를 들어, '상품', '회사', '직원'등과 같이 명사이면서 업무와 관련된 데이터를 엔티티로 규정합니다.

JPA에서는 Java를 이용해서 이러한 엔티티들을 관리하기 때문에 엔티티 타입의 존재는 클래스가 됩니다. 예를 들어, JPA에서 '하나의 엔티티 타입을 생성한다'라는 의미는 '하나의 클래스'를 작성한다는 의미가 됩니다.

 

2. 엔티티 매니저란 무엇인가?

엔티티 매니저는 여러 엔티티 객체들을 관리하는 역할을 합니다. 여기서 '관리'란 'Life Cycle'이라고 할 수 있습니다. 엔티티 매니저는 자신이 관리해야 하는 엔티티 객체들을 '영속 컨텍스트(Persistence Context)'라는 곳에 넣어두고, 객체들의 생사를 관리하게 됩니다.

 

 

3. 영속 컨텍스트(Persistence Context)와 엔티티 객체

영속 컨텍스트는 JPA가 엔티티 객체들을 모아두는 '공간'이라고 이해 할 수 있습니다. 컨텍스트라는 용어는 하나의 공간이나 울타리라는 개념으로 이해될 수 있습니다. 엔티티 객체는 아래와 같은 상태로 구분될 수 있습니다.

  • New(비영속) : Java 영역에 객체만 존재하고, 데이터베이스와 연동된 적이 없는 상태, 엔티티 매니저의 관리하에 있는 것이 아니기 때문에 순수한 Java 객체
  • Managed(영속) : 데이터베이스에 저장되고, 메모리상에서도 같은 상태로 존재하는 상태, 객체는 영속 컨텍스트 내에 들어가게 되고, id(PK) 값을 통해서 필요한 엔티티 객체를 꺼내 사용할 수 있게 됩니다.
  • Removed(삭제) : 데이터베이스상에서 삭제된 상태, 객체는 더 이상 영속 컨텍스트에 존재하지 않습니다.
  • Detached(준영속) : 영속 컨텍스트에서 엔티티 객체를 꺼내서 사용하는 상태, 준영속 상태의 객체는 고유한 id(PK)를 가지고 있지만, 아직 데이터베이스와 동기화가 이루어지지 않은 상태

References

스타트 스프링 부트, 구멍가게 코딩단 저