백엔드 개발 · 기초
JPA에서 엔티티 상태(비영속, 영속, 준영속, 삭제)에 대해 설명해주세요.
힌트 · 각 상태에서 영속성 컨텍스트와의 관계를 설명해보세요.
영속성 컨텍스트EntityManager트랜잭션객체 그래프flush
모범답안
JPA에서 엔티티 상태는 크게 4가지로 나눌 수 있습니다.
첫째, 비영속(New/Transient) 상태는 엔티티 객체가 생성되었지만 아직 영속성 컨텍스트와 관련이 없는 상태입니다. 단순히 new 키워드로 생성된 객체라고 생각하시면 됩니다.
둘째, 영속(Managed) 상태는 엔티티 매니저를 통해 영속성 컨텍스트에 저장되어 관리되는 상태입니다. EntityManager.persist() 메서드를 통해 영속 상태로 만들 수 있고, 트랜잭션이 커밋될 때 데이터베이스에 반영됩니다. 영속성 컨텍스트에 의해 변경사항이 추적됩니다.
셋째, 준영속(Detached) 상태는 영속성 컨텍스트에 의해 관리되다가 분리된 상태입니다. EntityManager.detach() 메서드나 영속성 컨텍스트가 종료될 때 발생합니다. 더 이상 영속성 컨텍스트의 관리를 받지 않지만, 데이터베이스에는 여전히 존재합니다.
마지막으로, 삭제(Removed) 상태는 엔티티가 영속성 컨텍스트에서 삭제된 상태입니다. EntityManager.remove() 메서드를 통해 삭제 상태로 만들 수 있으며, 트랜잭션 커밋 시 데이터베이스에서도 삭제됩니다.
각 상태는 영속성 컨텍스트와의 관계에 따라 구분되며, 엔티티 매니저를 통해 상태를 변경하고 관리할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 JPA / ORM 면접 질문
- JPA에서 엔티티 설계 시 @Setter 사용을 지양하는 이유와 대안은 무엇인가요?
- JPA Auditing(@CreatedDate, @LastModifiedDate)의 설정 방법과 동작 원리를 설명해주세요.
- JPA에서 @GeneratedValue 전략(IDENTITY, SEQUENCE, TABLE, AUTO)의 차이점은?
- JPA(Java Persistence API)란 무엇이며, 자바 애플리케이션에서 어떤 역할을 하는 기술 표준인가요?
- JPA의 N+1 문제가 무엇이며, 어떻게 해결할 수 있나요?
- JPA의 영속성 컨텍스트(Persistence Context)란 무엇이며, 1차 캐시의 역할은 무엇인가요?