orphanRemoval2 CascadeType.REMOVE, orphanRemoval=true 특징 JPA에서 엔티티 간의 관계를 설정할 때, CascadeType.REMOVE와 orphanRemoval=true 옵션은 부모 엔티티와 자식 엔티티 간의 삭제 동작을 제어하는 중요한 기능이다. 이 두 옵션은 비슷한 역할을 하지만, 그 동작 방식과 적용되는 상황에서 차이가 있다. 아래에서 각각의 옵션에 대해 상세히 설명하고, 그 차이점을 명확히 하겠다.CascadeType.REMOVE CascadeType.REMOVE는 부모 엔티티가 삭제될 때, 연관된 자식 엔티티도 함께 삭제되도록 하는 옵션이다. 이 옵션은 부모 엔티티의 생명 주기와 자식 엔티티의 생명 주기를 일치시키는 데 사용된다. @Entitypublic class Parent { @Id @GeneratedValue(strategy = Ge.. 2024. 10. 20. [JPA] orphanRemoval 옵션을 사용할 때 Update 주의사항 😂 배경 프로젝트 개발 중 특정 엔티티에 10개가 넘는 필드를 업데이트를 해달라는 비즈니스 요구사항이 있었다. 그래서 10개가 넘는 필드를 각각 업데이트하는 메서드를 작성했는데.. 보기에 별로 좋아 보이지 않았다. 필자는 JPA의 save() 메서드가 통해 저장과 변경에 대한 기능을 한 번에 제공하고 있다는 걸 알고 있었다. 그래서 빌더 패턴으로 기존 ID, 값, 변경된 값을 추가한 새로운 엔티티를 만들어서 save()를 통해 업데이트하는 게 보기에도 좋고 효율적으로 보였다. 생각대로 코드를 작성하고 테스트 한 뒤 나름 결과에 만족했다. 그러던 어느 날 운영 팀에서 연락이 온다. "업데이트를 했더니 연결된 데이터가 다 사라졌는데요?" "????" 운영 중에 클라이언트가 업데이트를 했는데, 데이터가 다 사.. 2023. 10. 28. 이전 1 다음