최대 절전 모드 - 4개 엔티티 상태

엔터티란 무엇입니까? 💬❓



엔티티는 데이터베이스의 테이블에 해당하는 도메인 클래스입니다. Java 클래스가 엔티티가 되려면 최소한 @Entity 어노테이션이 있는 필드, 패키지 액세스 레벨 no-args 생성자 및 어노테이션이 필요합니다.

엔터티 클래스의 모습은 다음과 같습니다.

@Entity
class ExampleObject {
  @Id
  @GeneratedValue
  private Long id;
  private String value;
}


백그라운드에서 어떻게 작동합니까? ⚙️



Persistence Context는 엔티티 객체와 엔티티 생명주기를 관리하는 구조입니다. 데이터베이스와 응용 프로그램 사이에 있습니다. 지속성 컨텍스트는 엔터티 개체에 대한 참조를 보유합니다. JPA의 EntityManager와 Hibernate의 Session 객체는 Persistence Context 내부 구조로 내부에 위치한다. 지속성 컨텍스트의 엔터티에 대한 다음 액세스는 데이터베이스로 이동하지 않지만 동일한 엔터티 참조가 애플리케이션에 반환됩니다. 첫 번째 수준 캐시라고도 합니다.
Persistence Context는 로드된 엔터티를 모니터링하고 엔터티 개체에 변경 사항이 있을 때 더티(수정됨)로 표시하고(내 다른 게시물을 확인하십시오) 특정 단계에서 변경 사항을 데이터베이스에 자동으로 반영합니다. Entity 개체에 대한 변경 사항을 감지하기 위해 Persistence Context에 업로드된 각 개체의 스냅샷 복사본도 보관됩니다. 엔터티의 변경 사항을 따르려면 엔터티가 로드된 세션이 열려 있어야 하며 로드된 엔터티와 이 세션의 관계가 계속되어야 합니다. 세션이 닫히면 해당 엔터티의 스냅샷 복사본도 손실됩니다.

Entity Lifecycle을 알려주지 않겠습니까?? 😡



모든 엔터티 개체에는 수명 주기와 개체가 존재하는 상태가 있습니다. 임시, 관리, 분리 또는 제거입니다. Hibernate 및 기타 JPA 구현을 올바르게 사용하려면 이러한 상황을 이해하는 것이 중요합니다.



새로운 과도
엔터티 객체가 생성되고 기본 키가 없으면 해당 상태는 새로운 일시적입니다. 새로운 임시 상태의 객체는 데이터베이스에 대응하는 레코드가 없으며 이러한 객체는 지속성 컨텍스트와 관련이 없습니다.

Car car = new Car();
car.setName(“Ferrari”);


관리
데이터베이스 대응 항목이 있고 활성 세션에 존재하며 지속성 컨텍스트에 의해 관리되는 엔터티는 이 상태에 있습니다. Persistence Context가 켜져 있는 한 관리 상태에 있는 엔터티의 상태 변화를 추적하며 이러한 변화는 특정 단계에서 자동으로 데이터베이스에 반영됩니다. 이 상태 동안 Hibernate는 객체를 관리하고 변경 사항을 커밋하면 저장합니다.

Session session = HibernateSessionFactory.currentSession();
transaction = session.beginTransaction();
session.save(car);
car.setName(“Fiat”);
transaction.commit();


분리하다
데이터베이스 상대 항목이 있지만 지속성 컨텍스트에는 없는 엔터티의 상태는 분리입니다. Persistence Context가 꺼지면 관리되는 상태의 엔터티 상태는 분리 상태가 됩니다. Hibernate는 Detach 상태의 엔티티에 대한 변경 사항을 추적하지 않습니다.

제거됨
관리됨 또는 분리됨 상태의 엔터티가 삭제되면 제거됨 상태로 이동합니다.


어떤 상태에서 다른 상태로 이동하여 엔티티 상태가 어떻게 변경되는지 관찰하려면 다음link에서 자세한 내용을 확인하십시오...

좋은 웹페이지 즐겨찾기