사소한 Tip과 개념들

saveAll과 deleteAll(deleteAllInBatch)

숲별 2022. 12. 9. 01:55
728x90

save 함수 한 번당 트랜잭션 Proxy 로직을 태웁니다.

  → 그렇기 때문에, 기존 트랜잭션이 있는 경우 해당 트랜잭션에 참여하게 되지만, 이러한 경우에도 어느정도 비용이 발생합니다.

  → 그래서, 다 건 조회 시 매번마다 위 비용이 발생하기 때문에 시간이 오래 걸립니다.

 

 

반면, saveAll 함수 전체에 하나의 트랜잭션이 존재하고, save는 내부 메소드 호출로 트랜잭션 Proxy 로직을 태우지 않습니다.

  → 그렇기 때문에, 트랜잭션 관련 비용이 발생하지 않습니다.

  → 그래서, 다 건 조회 시에 적합합니다.

https://maivve.tistory.com/342

 

[Spring] JPA의 save와 saveAll의 성능 차이, 그리고 원인.

안녕하세요? 거두절미하고 바로 작성해보겠습니다. JPA에서 데이터를 DB에 INSERT하기 위해 사용하는 save와 saveAll이 있습니다. 이 두 가지의 큰 차이는 save는 1개를 저장하는 것이고, saveAll은 안에

maivve.tistory.com

 

 

즉 deleteAll, deleteInBatch, deleteAllInBatch

실제로 for문을 전부 돌며 select를 해오느냐, iterable로 하나하나 확인하며 지우느냐, 아니면  쿼리한번으로 모두 지우느냐 차이이다.

 

https://mingg123.tistory.com/117

 

[JPA] deleteAll(), deleteAllInBatch(), deleteInBatch() 차이점

1. deleteAll() userRepository.deleteAll(userRepository.findAllById(Lists.newArrayList(1L,3L))); userRepository.findAll().forEach(System.out::println); 우선 첫번째 Select문같은 경우에는 findAllById로 인해 in 절로 select를 해온 이후 1

mingg123.tistory.com