이래저래 되는것도 있고 안 되는 것도 있고..
오늘은 다대일 설정을 좀 애먹었다.
다중성
- 다대일(@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 |