반응형 좋아요2 [Spring boot jpa] 찜/좋아요 삭제시 연관된 엔티티도 같이 삭제되는 문제 해결 상황사용자가 특정 House에 대해 찜을 해제하려고 할 때, Pin 엔티티가 삭제되어야 하는데, 의도치 않게 User와 House 엔티티까지 삭제되는 문제가 발생했습니다.원인@ManyToOne 관계에 설정된 cascade = CascadeType.ALL은 부모 엔티티에서 발생하는 모든 영속성(Persistence) 작업(예: PERSIST, MERGE, REMOVE 등)을 연관된 자식 엔티티에도 전파하도록 지정한다.house와 user는 @ManyToOne 관계에서 Pin과 연관되어 있으며, CascadeType.ALL로 설정되어 있습니다. 따라서 Pin 삭제 시 JPA는 이 연관된 엔티티들도 함께 삭제하도록 동작한다.pinRepository.deleteByUserAndHouse(user, house);.. 2025. 1. 25. [Spring boot jpa] 찜하기/좋아요 api에서 나온 race condition 문제 해결 찜하기 기능을 구현하기 위해 하나의 PATCH API를 사용하였고, 이를 통해 찜하기와 해제 기능을 동시에 처리하도록 설계했습니다. 그러나 다량의 찜하기/해제 요청이 동시에 들어오면서, user_id와 house_id가 같은 pin 엔티티가 중복 생성되는 문제가 발생하였고, 이에 따라 서버 오류가 발생했습니다. 아래와 같이 다대다 관계로 찜/좋아요 기능을 위해 엔티티를 설계했습니다.@Entity@Table(name="pin")@Datapublic class Pin { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne(fetch = FetchType.LAZY, cascade = Casc.. 2025. 1. 24. 이전 1 다음