deleteInBatch()
를 사용했더니 문제가 해결되었습니다.영속성 컨텍스트
- JPA를 사용할 때, 엔티티 매니저는 영속성 컨텍스트를 통해 엔티티의 생명주기를 관리
- deleteAll 메소드를 호출했을 때, 해당 엔티티들이 영속성 컨텍스트에 포함되어 있어야
- 실제로 데이터베이스에 DELETE 쿼리가 발생합니다.
- 만약 해당 엔티티들이 영속성 컨텍스트와 동기화되지 않았다면, DELETE 쿼리가 발생하지 않을 수 있습니다.
해결 : 직접적인 delete 메소드 호출
- deleteAll 대신에 deleteInBatch 메소드를 사용해 볼 수 있습니다. - deleteInBatch는 영속성 컨텍스트를 무시하고 바로 데이터베이스에 쿼리를 날리는 방식이기 때문에 성능상 이점이 있을 수 있으나,
- 영속성 컨텍스트와 데이터베이스 간의 동기화 문제가 발생할 수 있습니다.