본문 바로가기
TIL

항해99_TIL220601 (연관관계 매핑)

by Hyeongjun_Ham 2022. 6. 2.

이래저래 되는것도 있고 안 되는 것도 있고..

오늘은 다대일 설정을 좀 애먹었다.

 

다중성

  • 다대일(@ManyToOne)
  • 일대다(@OneToMany)
  • 일대일(@OneToOne)
  • 다대다(@ManyToMany)

 

단방향, 양방향

  • 단방향: 객체 관계에서 한쪽만 참조
  • 양방향: 객체 관계에서 양쪽이 서로 참조

 

연관관계의 주인

  • 두 객체 연관관계 중 외래 키를 관리하는 쪽을 주인이라 함
  • 외래 키를 가진 테이블과 매핑한 엔티티를 보통 연관관계의 주인으로 선택
  • 주인이 아닌 방향은 외래 키 변경 불가, 읽기만 가능
  • 주인이 아닌 쪽은 mappedBy 속성을 사용하여 주인 필드 이름을 값으로 입력

원하는 기능은 게시글에 댓글이 달리고, 게시글이 삭제되면 댓글을 전부 삭제하고싶었다.

 

Post부분

@OneToMany(mappedBy = "post", cascade = CascadeType.REMOVE)
List<Reply> replies = new ArrayList<>();

cascade를 부모쪽에 넣어줘야했다.

mappedBy는 주인을 나타낸다.

 

Reply부분

@JsonIgnore
@ManyToOne
@JoinColumn(name = "post_id")
private Post post;

@JsonIgnore 넣기 전에는 오류가 계속발생했는데, 이거 넣고 무한루프가 끊기는것으로 보인다.

 

이렇게 하니 게시글 삭제하면 댓글 전부 삭제된다.

 

 

출처: https://mjmjmj98.tistory.com/152

 

[JPA] 연관관계 매핑(다대일, 일대다, 일대일, 다대다)

김영한님의 자바 ORM 표준 JPA 프로그래밍을 읽고 정리한 글입니다. 1. 엔티티 연관관계 매핑 다중성 다대일(@ManyToOne) 일대다(@OneToMany) 일대일(@OneToOne) 다대다(@ManyToMany) 단방향, 양방향 단방향: 객..

mjmjmj98.tistory.com

 

'TIL' 카테고리의 다른 글

항해99_TIL220603 (배열 저장)  (0) 2022.06.03
항해99_TIL220602 (테스트 코드)  (0) 2022.06.02
항해99_TIL220531 (Builder)  (0) 2022.05.31
항해99_TIL220530 (JWT)  (0) 2022.05.31
항해99_WIL220529 (DI, IoC, Bean)  (0) 2022.05.29