수진개발서

sns프로젝트를 진행하면서 해당 Post가 지워지기 되면 함께 관계되어있던 댓글과 좋아요의 상태를 어떻게 해야하는가? 라는 상황이 생겼다.

이를 해결하기 위해서 영속성 전이라는 주제를 학습하게 되었다.

CASCADE

  • 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때
  • ex) 부모 엔티티 저장 시 자식 엔티티 저장
  • 영속성 전이는 연관 관계를 매핑하는 것과 아무 관련이 없음
  • 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화 하는 편리함만을 제공할 뿐

Cascade 종류

CascadeType.ALL 모두 적용
CascadeType.PERSIST  영속
CascadeType.MERGE 병합
CascadeType.REMOVE  삭제
CascadeType.REFRESH  REFRESH
CascadeType.DETACH DETACH

사용법

@OneToMany(mappedBy = "post", cascade = CascadeType.PERSIST)
게시물을 저장할 때 연관된 댓글도 같이 저장

@ManyToOne(mappedBy = "post", cascade = CascadeType.REMOVE)
부모를 삭제하면 연관된 자식도 삭제가됨, 즉 게시물이 지워지면 연관된 댓글, 좋아요 함께 삭제됨

고아 객체(ORPHAN)

  • 고아객체 제거: 부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제
  • CscadeType.REMOVE 처럼 동작한다.
  • @OneToOne, OneToMany만 사용 가능
  • 참조하는 곳이 하나일 때 사용해야함! 즉, 특정 엔티티가 개인 소유할 때 사용

CascadeType.ALL + 고아객체

  • 부모객체를 통해서 자식 객체의 생명주기를 조절할 수 있음
  • 도메인 주도 설계(DDD) Aggregate Root 개념을 구현할 때 유용

 

영속성 전이와 고아객체를 학습한 것 기반으로 SNS 프로젝트에 적용한 포스팅이다.

https://alcoholble.tistory.com/12

 

[SNS Project] Post 삭제 시 Like, Comment 삭제하기 (영속성 전이, Soft Delete)

✅목표 Post삭제 시 연관 되어 있는 Comment, Like 삭제 포스팅을 읽기 전에 아직 영속성 전이와 Soft Delete를 알지 못한다면 아래의 포스팅을 먼저 읽기를 권장한다. https://alcoholble.tistory.com/11 https://alco

alcoholble.tistory.com

Reference

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

 

'코딩 > JPA' 카테고리의 다른 글

[JPA] 영속성 컨텍스트  (2) 2023.07.17
[JPA] JPA개념 및 실습 환경 셋팅  (0) 2023.07.17
[JPA] Soft Delete 적용하기  (0) 2023.01.06
profile

수진개발서

@sujin_park0607

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!