0118 삭제

Que Lin·2022년 1월 18일

on delete cascade

: cascade = CascadeType.ALL,orphanRemoval = true


//부모 지워지면 자식도 지워짐 
@OneToMany(mappedBy = "memberEntity", cascade = CascadeType.ALL,orphanRemoval = true,fetch = FetchType.LAZY)
    private List<CommentEntity> commentEntityList = new ArrayList<>();

    @OneToMany(mappedBy = "memberEntity", cascade = CascadeType.ALL,orphanRemoval = true,fetch = FetchType.LAZY)
   private List<BoardEntity> boardEntityList = new ArrayList<>();

on delete set null

: cascade = CascadeType.PERSIST, orphanRemoval=false

   //on delete set null을 할 때 - preRemove() 도 같이 써야함
    @OneToMany(mappedBy = "memberEntity", cascade = CascadeType.PERSIST,orphanRemoval = false,fetch = FetchType.LAZY)
    private List<CommentEntity> commentEntityList = new ArrayList<>();

    @OneToMany(mappedBy = "memberEntity", cascade = CascadeType.PERSIST,orphanRemoval = false,fetch = FetchType.LAZY)
    private List<BoardEntity> boardEntityList = new ArrayList<>();

    // 부모를 지우는데 자식도 지우기 싫을 때
    @PreRemove
    private void preRemove(){
        System.out.println("MemberEntity.preRemove");
        boardEntityList.forEach(board -> board.setMemberEntity(null));
        //아래랑 위랑 같음
//        for(BoardEntity board:boardEntityList){
//            board.setMemberEntity(null);
//        }
        commentEntityList.forEach(comment ->comment.setMemberEntity(null));
    }
}
profile
1일 1커밋 1일 1벨로그!

0개의 댓글