inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 ORM 표준 JPA 프로그래밍 - 기본편

영속성 전이(CASCADE)와 고아 객체

soft delete 라는 것을 알고 있습니다. 이에 대해 cascade 하게 삭제가 가능할까요?

670

dionisos198

작성한 질문수 42

1

만약에 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 다 마음에 안드는데 영한 님은 어떻게 사용하실까요?

java jpa

답변 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