인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

nickhealthy's profile image
nickhealthy

asked

Real-world! Spring Boot and JPA Utilization 2 - API Development and Performance Optimization

Enter sample data for query

데이터 초기화 시 CASCADE 옵션 궁금증

Written on

·

28

0

안녕하세요. PostConstruct 어노테이션을 사용해 Spring이 초기화될 때 DB에 데이터를 초기화 해주셨는데요.

Order, OrderItem 클래스 필드에 cascade 옵션이 있어서 order나 orderItem만 em.persist() 하면 다른 엔티티도(delivery, orderItems 등) 다 같이 persist 되지 않나요?

 

왜 엔티티별로 따로 하나씩 persist 하셨는지 궁금합니다. 제가 잘못 이해한 거라면 설명 한번 부탁드리겠습니다!

javaspringspring-bootjpa

Answer 2

0

yh님의 프로필 이미지
yh
Instructor

안녕하세요. nickheatlhy님

delivery, orderItems는 persist 하지 않고, order만 persist 하고 있습니다^^!

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

님의 질문에 감사드립니다. cascade 옵션은 엔티티 연관 관계에서 연관된 엔티티 간에 특정 작업(예: 저장, 삭제)을 자동으로 전파하는 편리한 기능을 제공하지만, 이는 모든 상황에서 자동으로 작동하는 것은 아닙니다. cascade를 사용하기 위해서는 설정된 특정 연관관계에서만 적용됩니다.

따라서 다음과 같이 요약할 수 있습니다:

  1. Cascade 옵션: cascade 옵션을 통해 부모 엔티티를 persist하면 연관된 자식 엔티티도 자동으로 persist가 가능합니다. 하지만 이는 부모 엔티티가 반드시 자식 엔티티를 참조하고 있어야 하고, 해당 연관 관계에 cascade 설정이 있는 경우입니다.

  2. 개별 persist: 모든 경우가 cascade로 해결되는 것은 아니기 때문에, 때로는 엔티티 상태나 복잡한 비즈니스 로직에 따라 개별적으로 persist할 필요가 있습니다. 코드의 명확성이나 성능 상의 이유로 별도로 persist하는 것이 더 나을 수 있습니다.

비슷한 질문에 대한 답변이 아래에 있으니 추가로 참고해 보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

nickhealthy's profile image
nickhealthy

asked

Ask a question