soft delete 라는 것을 알고 있습니다. 이에 대해 cascade 하게 삭제가 가능할까요?
670
작성한 질문수 42
만약에 Review 가 있고, Review 에 대해 좋아요 기능이 있습니다.
기존 Hard Delete 시 좋아요 엔티티에 @ManyToOne 에 @OnDelete(action = OnDeleteAction.CASCADE) 를 사용 리뷰 삭제시 리뷰에 대한 좋아요도 삭제할 수 있었습니다.
그런데 Review에 대해 Soft Delete 시, 리뷰에 대한 좋아요는 Hard Delete로 삭제한다면 이를 어떻게 구현하면 좋을까요??
1) Review가 delete 될 때마다 그냥 서비스 코드에 리뷰 좋아요 를 Hard delete 로 삭제하는 부분을 작성한다: @OnDelete 쓰다가 이거 쓰면 서러울 것 같아요.
2) DB trigger 를 사용한다. : 애플리케이션에서 코드에서 명시해서 적용할 방법은 없나???
3) EventLister 를 사용한다. : 이러면 Review 가 Update 될 때마다 @PostUpdate 해서 칼럼이 Deleted가 true인지 확인해야 되는데 .. Review 의 delete 칼럼이 업데이트 될때만 적용되는게 아니라 다른 칼럼이 업데이트 될때 이 부분을 항상 체크해주어야 해서 비효율적일것 같구!
4) 양방향 연관관계를 쓰기 싫은데 어거지로 써서
@OneToMany(cascade=remove) 를 사용한다.
1,2,3,4 다 마음에 안드는데 영한 님은 어떻게 사용하실까요?
답변 1
3
안녕하세요. dionisos198님
Review는 Sofe delete, 좋아요는 Hard Delete를 사용한다면 cascade를 사용하는 것이 적합하지 않습니다.
우리가 실제 구현을 할 때는 최대한 단순하게 구현하는 것이 중요합니다.
예를 들어 복잡한 cascade, DB trigger, EventLister 같은 것을 사용하는 것 보다 단순하게 접근하는 것이 중요합니다. 단순하게 접근하는 것이 결과적으로 더 유지보수 하기 좋습니다. (물론 상황에 따라 다를 수는 있습니다.)
저라면 Review는 sofe delete를 해야 하니 관련 컬럼을 update 처리(변경)하고, 좋아요는 Delete(삭제)하는 것을 하나의 트랜잭션에 묶어서 처리할 것 같아요.
감사합니다.
inheritance startegy 선택시 고려사항
0
11
0
Entity 동등성 비교
0
14
1
실무 조언 관련 질문입니다.
0
41
1
H2데이터베이스 파일 생성
0
52
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
49
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
48
1
JPQL 메소드와 락
0
53
1
Delivery @OneToOne
0
57
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
89
2
UnsupportedOperationException 발생
0
82
3
H2 Database 연결이 안됩니다.
0
89
2
연관관계 매핑 질문드립니다.
0
82
2
h2데이터베이스 실행오류
0
105
2
persistence.xml
0
103
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
77
1
영속성 컨텍스트
0
62
1
JPA 프록시
0
90
1
Native Query와 MyBatis
0
63
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
84
1
임베디드 타입 예시 코드 관련 질문
0
112
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
91
3
인텔리제이 패키지 커서 단축키 질문
0
106
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
137
1
양방향 연관관계 시 연관관계 주인을 설정하는 이유
0
68
1





