Replies: 1 comment
-
|
제 생각은 on delete cascade 를 셋팅해서, 유저 삭제시 연관 데이터들을 삭제하는 것 보다, 비즈니스 로직으로 유저 데이터를 삭제하는 것이 좋을 것 같다는 생각입니다. 1. 엔티티에서 나타내는 규칙과, db의 규칙이 달라짐 2. Post 삭제 시, 비즈니스 로직이 필수적으로 보임 3. comment 삭제의 복잡함 4. 채팅 데이터들 관련한 문제점 이와 같은 문제를 생각 했을 때, 삭제 시 비즈니스 로직이 강제 된다 생각합니다. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Ref
이슈
PR
양방향 연관관계
장점
Post와Comment는 양방향 연관관계가 설정되어 있는데, 그렇다면post.getCommentList()와 같이 객체 그래프 타고 자연스러운 흐름으로 데이터 조회 가능Cascade나OrphanRemoval옵션을 통해 연관 객체까지 삭제 처리 가능단점
간접 참조
장점
단점
결론
Hard Delete 시 발생하는 문제
발생한 문제
SiteUser와 연관 객체 간 양방향 연관 관계를 끊었기에,SiteUser객체 삭제 시 연관 객체의 데이터가 삭제되지 않은 문제 발생 +SiteUser또한 삭제 안 됨(연관 데이터부터 삭제해야 하므로)해결 방법
SiteUser와 연관된 FK에 대해ON DELETE CASCADE옵션 추가하여 삭제되도록Post는 이미지까지 삭제해야 함. FK 제약 조건으로만 삭제하면 이미지는 고아가 됨. 또한Post경우 Redis 캐시 데이터는 정리 안 됨ON DELETE CASCADE적용하기SiteUser를 간접 참조하는 엔티티를 생성하는 경우 까먹지 않고 삭제 로직 구현 & 스케줄러에 작성해주어야 함.Beta Was this translation helpful? Give feedback.
All reactions