saveAll, findAll, deleteAll 등등, JPA에서 기본적으로 제공해주는 메소드가 존재하며, Spring Data에서도 All 키워드를 제공해준다.
그렇다면, 여러 번 처리하는거랑 All 키워드를 사용했을 때랑, 어떠한 차이가 존재할까?
이에 대해 살펴보는 시간을 가져보겠다.
findAllById
- 매개변수로 여러 개의 Id를 넘겨서 엔티티를 조회하는 메소드
- SQL에서는 IN을 사용해서 조회한다.
- findById를 통해 여러 번의 SELECT 쿼리를 발생시키기 보단, IN절을 통해 하나의 SELECT 쿼리로 여러 엔티티를 가져오는 것이 더욱 효율적이다.
saveAll, deleteAll
- 매개변수로 여러 개의 엔티티를 넘겨서 엔티티를 저장/삭제
- 엔티티의 개수만큼 INSERT와 DELETE 쿼리가 발생된다.
- 하지만, saveAll과 deleteAll은 하나의 트랜잭션 내에서 여러 번의 save와 delete를 호출하기 때문에, All을 사용하는 것이 효과적이다.
- All을 사용하지 않는다면, 엔티티의 개수만큼 DB 세션을 연결하고 끊기를 반복할 것이다.