패스잇
백엔드 개발 · 기초

JPA에서 엔티티 상태(비영속, 영속, 준영속, 삭제)에 대해 설명해주세요.

힌트 · 각 상태에서 영속성 컨텍스트와의 관계를 설명해보세요.

영속성 컨텍스트EntityManager트랜잭션객체 그래프flush

모범답안

JPA에서 엔티티 상태는 크게 4가지로 나눌 수 있습니다.

첫째, 비영속(New/Transient) 상태는 엔티티 객체가 생성되었지만 아직 영속성 컨텍스트와 관련이 없는 상태입니다. 단순히 new 키워드로 생성된 객체라고 생각하시면 됩니다.

둘째, 영속(Managed) 상태는 엔티티 매니저를 통해 영속성 컨텍스트에 저장되어 관리되는 상태입니다. EntityManager.persist() 메서드를 통해 영속 상태로 만들 수 있고, 트랜잭션이 커밋될 때 데이터베이스에 반영됩니다. 영속성 컨텍스트에 의해 변경사항이 추적됩니다.

셋째, 준영속(Detached) 상태는 영속성 컨텍스트에 의해 관리되다가 분리된 상태입니다. EntityManager.detach() 메서드나 영속성 컨텍스트가 종료될 때 발생합니다. 더 이상 영속성 컨텍스트의 관리를 받지 않지만, 데이터베이스에는 여전히 존재합니다.

마지막으로, 삭제(Removed) 상태는 엔티티가 영속성 컨텍스트에서 삭제된 상태입니다. EntityManager.remove() 메서드를 통해 삭제 상태로 만들 수 있으며, 트랜잭션 커밋 시 데이터베이스에서도 삭제됩니다.

각 상태는 영속성 컨텍스트와의 관계에 따라 구분되며, 엔티티 매니저를 통해 상태를 변경하고 관리할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 JPA / ORM 면접 질문

← JPA / ORM 면접 질문 전체 보기