[java] Hibernate에서 엔티티 클래스의 상태(State) 변경하는 방법은?
엔티티 클래스의 상태 변경은 다음과 같은 단계로 이루어집니다:
-
영속성 컨텍스트에 엔티티 객체 추가/로드: 먼저 영속성 컨텍스트에 엔티티 객체를 추가하거나 로드해야 합니다. 이를 통해 객체와 데이터베이스 간의 연결이 형성됩니다.
EntityManager
의persist()
메서드를 사용하여 엔티티 객체를 추가하거나EntityManager
의find()
메서드를 사용하여 엔티티 객체를 로드할 수 있습니다. -
엔티티 객체 수정: 영속성 컨텍스트에 추가된 또는 로드된 엔티티 객체를 수정할 수 있습니다. 엔티티 객체의 필드를 변경하거나 연관된 엔티티 객체를 설정하는 등의 작업을 수행할 수 있습니다.
-
트랜잭션 커밋: 상태 변경을 완료하기 위해 엔티티 객체의 수정을 트랜잭션 커밋과 함께 저장소에 반영해야 합니다. 트랜잭션을 커밋하면 영속성 컨텍스트는 변경된 엔티티를 데이터베이스에 반영하고 영속성 컨텍스트를 비우게 됩니다.
예제 코드를 살펴보겠습니다.
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
를 사용하여 엔티티 객체를 추가하고 로드하며, 그 후 엔티티 객체를 수정한 뒤, 트랜잭션을 커밋하여 변경 내용을 저장소에 반영하는 것을 볼 수 있습니다.
참고문헌:
- Hibernate 공식 문서: https://docs.jboss.org/hibernate/orm/5.5/userguide/html_single/Hibernate_User_Guide.html
- JPA (Java Persistence API) 스펙 문서: https://jakarta.ee/specifications/persistence/