
영속성 전이는 특정 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화되도록 강제하는 설정임. 이는 데이터베이스의 참조 무결성과는 별개의 개념으로, JPA의 영속성 컨텍스트(Persistence Context) 관리 관점에서 이해해야 함.
@OneToMany 또는 @OneToOne 등으로 연관 관계를 맺고 있을 때 사용함.일반적으로 JPA는 단일 엔티티의 영속 상태만을 추적함. 연관 관계가 맺어져 있더라도 자식 엔티티를 별도로 저장하지 않으면 데이터베이스에 반영되지 않거나, 외래 키(FK) 제약 조건 위반이 발생할 수 있음.
save() 호출해야 했음.다음과 같은 코드 실행 시 JPA 내부에서는 연쇄적인 영속화 작업이 발생함.
@Entity
public class Question {
@OneToMany(mappedBy = "question", cascade = CascadeType.PERSIST)
private List<Answer> answerList = new ArrayList<>();
}
question.getAnswerList().add(answer)를 통해 자바 객체 간의 연관 관계를 설정함.questionRepository.save(question)를 호출하여 부모 엔티티를 영속성 컨텍스트에 등록함.cascade = PERSIST 옵션을 식별함.answerList 내의 비영속(Transient) 상태인 엔티티들을 자동으로 찾아 persist()를 수행함.INSERT 쿼리와 자식들의 INSERT 쿼리가 순차적으로 실행됨.cascade 설정을 한다고 해서 연관 관계의 주인이 바뀌는 것은 아님. 데이터베이스의 외래 키 제어는 여전히 연관 관계의 주인이 담당함.EntityManager.persist() 호출 시점에 전이가 발생하며, 최종적으로 데이터베이스에 쿼리가 전송됨.