모각코_2주차

Haegyeong Kim·2024년 7월 24일

모각코_2024

목록 보기
3/6

알고리즘: Dynamic Programming 이론 복습
Spring Boot Backend 공부: 엔티티 연관관계

알고리즘


DP

Baisc Idea: 하나의 큰 문제를 여러 개의 작은 문제로 나누어 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용
일반적인 재귀(Naive Recursion) 방식 또한 DP와 매우 유사. 큰 차이점은 일반적인 재귀를 단순히 사용 시 동일한 작은 문제들이 여러 번 반복 되어 비효율적인 계산이 될 수 있다는 것

DP 사용 조건
겹치는 부분 문제 Overlapping Subproblems
최적 부분 구조 Optimal Substructure

엔티티 연관관계


JPA Cascade

엔티티와 다른 엔티티가 밀접한 연관성이 있을 때에 대한 관리가 수월해진다.

Cascade는 ‘폭포수가 흐르다’ 라는 사전적 의미를 가지고 있다.

JPACascade Types

  • PERSIST 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화
  • MERGE 엔티티 상태 병합할 때 엔티티도 함께 병합
  • REMOVE 엔티티 제거할 때 연관된 엔티티들도 함께 제거
  • REFRESH 엔티티를 새로고침할 때 연관된 엔티티들도 함께 새로고침 즉, 데이터베이스로부터 실제 레코드의 값을 즉시 로딩해 덮어씌운다는 의미
  • DETACH 엔티티를 영속성 컨텍스트로부터 분리하면 연관된 엔티티들 역시 분리
  • ALL 위의 모든 CascadeType들이 적용된다.

** CascadeType.REMOVE혹은 CascadeType.ALL 옵션을 사용하는 경우 엔티티 삭제 시 연관된 엔티티들이 전부 삭제 되개 때문에 의도치 않게 참조 무결성 제약 조건을 위반할 수 있는 가능성 존재

🧐그렇다면 언제 사용 해야 할까?
엔티티 간 관계(구조)가 명확할 때 사용하는 것 권장!
JPA Cascade는 개발 편의성을 높일 수 있는 기술이지만 오용하는 경우 데이터 정합성을 깨뜨릴 수 있으며 최악의 경우 데이터 손실까지 발생하게 되니 정확한 개념과 발생할 수 있는 문제상황들을 파악하고 익힌 후 사용하는 것이 좋다

삭제 규칙

JPA의 CascadeType & orphanRemoval 활용

JPA Cascade는 무엇이고 언제 사용해야 할까?

profile
Computer Science & Engineering

0개의 댓글