220819 @Delete

Jongleee·2022년 8월 19일
2

TIL

목록 보기
32/576

Cascade를 사용할 경우 @ManyToOne 어노테이션만으로 충분함에도 불구하고 @OneToMany 어노테이션을 통해 불필요한 양방향 매핑을 사용하여야 한다

이러한 문제점을 해결하기 위해 @Delete을 사용할 수 있다.

Cascade는 JPA에 의해 처리되어 JPA를 통해 외래 키를 찾아 참조하는 레코드를 제거하는 반면 @Delete는 DB에 의해 직접 처리한다.

즉,

@OnDelete(action = OnDeleteAction.CASCADE)

을 달아주면 양방향 매핑 없이도 Cascade와 같이 처리할 수 있다.

@Delete는 DB에서 처리해주기에 단일한 쿼리를 통해 연쇄적으로 제거할 수 있지만 Cascade의 경우에는 여러개의 쿼리를 날린다.

그렇기 때문에 @Delete가 효과적인 면은 있으나 on delete cascade에 의해 레코드의 참조 레코드까지 연쇄적으로 삭제해버릴 수 있는 가능성이 있다는 단점이 존재하므로 주의하여야 한다

1개의 댓글

comment-user-thumbnail
2022년 8월 20일

하루에도 몇 개씩 열심히 작성하시는 모습이 보기 좋네요 배워야겠어요!

답글 달기