[TIL] JPA - 한 번에 엔티티를 조회/등록/삭제를 하려면, xxxAll을 사용하자

phdljr·2024년 1월 17일
0

TIL

목록 보기
58/70

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 세션을 연결하고 끊기를 반복할 것이다.

profile
난 Java도 좋고, 다른 것들도 좋아

0개의 댓글