Book
@ManyToOne(cascade = CascadeType.PERSIST)
//다대일 관계, Book 객체가 Persist 될 때에 Publisher도 Persist 적용
@ToString.Exclude
private Publisher publisher;
BookRepositoryTest
Book book1 = bookRepository.findById(1L).get();
book1.getPublisher().setName("슬로우캠퍼스");
bookRepository.save(book1);
System.out.println("publishers: "+publisherRepository.findAll());
result
슬로우캠퍼스가 적용되지 않았다!
because, 이미 Persist 액션을 취했고, name을 변경하기 때문에 merge에 대한 이벤트 발생
update 즉 merge에 대한 event발생, 하지만 cascade에서 persist설정을 했기 때문에
merge에 대해서 영속성 전이가 일어나지 않은것.
즉 해당 데이터를 넣고 싶으면 별도의 처리가 필요하다.
merge에 대해서도 cascade를 하기 위해 추가 해 보겠다.
Book
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE}) //배열타입
//PERSIST와 MERGE에 대해서 영속성 전이를 일으키겠다! 라고 선언해줌
//다대일 관계, Book 객체가 Persist 될 때에 Publisher도 Persist 적용
@ToString.Exclude
private Publisher publisher;
result
슬로우캠퍼스가 적용되었다!
그 외 Cascade 옵션에 대해 짧게 정리하자면
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Java/Spring웹개발마스터초격차패키지Online
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.