ConcurrentModificationException 오류

JooHeon·2022년 1월 26일
0

🖊 발생 상황

A엔티티에 1 : N으로 연결된 B엔티티 리스트를 지우는 상황.
단순하게 기본 JpaRepository로 A엔티티를 지우면 1 + N로 delete query가 나가서
B엔티티 리스트를 순회 돌면서 B엔티티를 A엔티티 컬렉션에서 제거를 해봤을 때 발생

🖊 발생 이유

Enhanced for loop(향상된 포문)의 Iterator 동작 방식에서
객체의 일관성을 지키기 위해 컬렉션 순회 중 데이터 조작이 발생했을 때

🖊 오류 대처

일관성을 지켜주기 위해 리스트를 생성할 때 CopyOnWriteArrayList를 사용한다.

🖊 결론

근데 컬렉션을 어떻게 변형해서 하든 1 + N 문제가 해결되는 건 아니라서
Cascade Remove를 사용하지 않는 상황에서 쿼리로 delete~ where in 구문을 이용하여 해결

0개의 댓글