필자는 프로젝트 진행중에서 조인 테이블 전략을 사용했을 때 연관관계를 부모 테이블, 자식 테이블 중 어느 테이블에 매핑 시켜야 하지 라는 의문이 있었다. 결론부터 말하면 부모 테이블에 다른 테이블과의 연관관계를 매핑시켜야 한다. ex) board 라는 부모 테이블에 comment 테이블과 매핑 시킨다. 그렇지 않으면 board 를 상속받은 AdminBoard 라는 테이블이 있고, 이 AdminBoard 테이블을 삭제할 때 연관된 comment 테이블 데이터가 삭제되지 않는다.
@Entity
@Getter
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn
public class Board extends BaseBoardEntity {
@Id @GeneratedValue
@Column(name = "board_id")
private Long id;
//관계 매핑
@OneToMany(cascade = CascadeType.ALL)
private List<Comment> comments = new ArrayList<>();
}
@Entity
@NoArgsConstructor
@Getter
@Table(name = "admin_board")
public class AdminBoard extends Board {
private String content;
public AdminBoard(String title, String content) {
super.title = title;
this.content = content;
}
public Long getId() {
return super.getId();
}
@OneToMany(mappedBy = "adminBoard", cascade = CascadeType.ALL)
private List<AdminUploadFile> adminUploadFiles = new ArrayList<>();
}