[java] Hibernate에서 엔티티 클래스의 상태(State) 변경하는 방법은?

엔티티 클래스의 상태 변경은 다음과 같은 단계로 이루어집니다:

  1. 영속성 컨텍스트에 엔티티 객체 추가/로드: 먼저 영속성 컨텍스트에 엔티티 객체를 추가하거나 로드해야 합니다. 이를 통해 객체와 데이터베이스 간의 연결이 형성됩니다. EntityManagerpersist() 메서드를 사용하여 엔티티 객체를 추가하거나 EntityManagerfind() 메서드를 사용하여 엔티티 객체를 로드할 수 있습니다.

  2. 엔티티 객체 수정: 영속성 컨텍스트에 추가된 또는 로드된 엔티티 객체를 수정할 수 있습니다. 엔티티 객체의 필드를 변경하거나 연관된 엔티티 객체를 설정하는 등의 작업을 수행할 수 있습니다.

  3. 트랜잭션 커밋: 상태 변경을 완료하기 위해 엔티티 객체의 수정을 트랜잭션 커밋과 함께 저장소에 반영해야 합니다. 트랜잭션을 커밋하면 영속성 컨텍스트는 변경된 엔티티를 데이터베이스에 반영하고 영속성 컨텍스트를 비우게 됩니다.

예제 코드를 살펴보겠습니다.

EntityManager entityManager = entityManagerFactory.createEntityManager();

// 엔티티 객체 추가
EntityA entityA = new EntityA();
entityA.setName("Example");
entityManager.persist(entityA);

// 엔티티 객체 로드 및 수정
EntityA loadedEntityA = entityManager.find(EntityA.class, entityId);
loadedEntityA.setName("Modified Example");

// 트랜잭션 커밋
entityManager.getTransaction().begin();
entityManager.getTransaction().commit();

entityManager.close();

위의 예제 코드에서는 EntityManager를 사용하여 엔티티 객체를 추가하고 로드하며, 그 후 엔티티 객체를 수정한 뒤, 트랜잭션을 커밋하여 변경 내용을 저장소에 반영하는 것을 볼 수 있습니다.

참고문헌: