알고리즘: Dynamic Programming 이론 복습
Spring Boot Backend 공부: 엔티티 연관관계
Baisc Idea: 하나의 큰 문제를 여러 개의 작은 문제로 나누어 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용
일반적인 재귀(Naive Recursion) 방식 또한 DP와 매우 유사. 큰 차이점은 일반적인 재귀를 단순히 사용 시 동일한 작은 문제들이 여러 번 반복 되어 비효율적인 계산이 될 수 있다는 것
DP 사용 조건
겹치는 부분 문제 Overlapping Subproblems
최적 부분 구조 Optimal Substructure
엔티티와 다른 엔티티가 밀접한 연관성이 있을 때에 대한 관리가 수월해진다.
Cascade는 ‘폭포수가 흐르다’ 라는 사전적 의미를 가지고 있다.
** CascadeType.REMOVE혹은 CascadeType.ALL 옵션을 사용하는 경우 엔티티 삭제 시 연관된 엔티티들이 전부 삭제 되개 때문에 의도치 않게 참조 무결성 제약 조건을 위반할 수 있는 가능성 존재
🧐그렇다면 언제 사용 해야 할까?
엔티티 간 관계(구조)가 명확할 때 사용하는 것 권장!
JPA Cascade는 개발 편의성을 높일 수 있는 기술이지만 오용하는 경우 데이터 정합성을 깨뜨릴 수 있으며 최악의 경우 데이터 손실까지 발생하게 되니 정확한 개념과 발생할 수 있는 문제상황들을 파악하고 익힌 후 사용하는 것이 좋다
JPA의 CascadeType & orphanRemoval 활용