[JPA] deleteInBatch()

Yunny.Log ·2024년 2월 13일
0

Debugging

목록 보기
69/69
post-thumbnail
  • delete() 를 날리지만, 쿼리가 날아가지 않는 이슈가 있었습니다.
  • 이는 영속성 컨텍스트에 이것이 포함되지 않아서이입니다.
  • 영속성 컨텍스트에 상관없이 DB 에 쿼리를 날리도록 하는 deleteInBatch() 를 사용했더니 문제가 해결되었습니다.

영속성 컨텍스트

  • JPA를 사용할 때, 엔티티 매니저는 영속성 컨텍스트를 통해 엔티티의 생명주기를 관리
  • deleteAll 메소드를 호출했을 때, 해당 엔티티들이 영속성 컨텍스트에 포함되어 있어야
  • 실제로 데이터베이스에 DELETE 쿼리가 발생합니다.
  • 만약 해당 엔티티들이 영속성 컨텍스트와 동기화되지 않았다면, DELETE 쿼리가 발생하지 않을 수 있습니다.

해결 : 직접적인 delete 메소드 호출

  • deleteAll 대신에 deleteInBatch 메소드를 사용해 볼 수 있습니다. - deleteInBatch는 영속성 컨텍스트를 무시하고 바로 데이터베이스에 쿼리를 날리는 방식이기 때문에 성능상 이점이 있을 수 있으나,
  • 영속성 컨텍스트와 데이터베이스 간의 동기화 문제가 발생할 수 있습니다.

0개의 댓글