save와 saveAll의 차이는 무엇인가요?
기본적인 차이는
save()는 엔티티 1개를,saveAll()은 N개의 엔티티를 저장하는 것인데 성능 차이가 존재한다.save()와saveAll()모두 내부적으로@Transactional이 적용되어 있다. 즉 트랜잭션 AOP가 적용돼 프록시를 통해 실행된다는 뜻이다.만약 100,000개의 엔티티를 Loop를 통해
save메서드를 사용해 저장한다면 각각의 엔티티가 프록시를 거치는 비용이 발생한다.하지만 자료구조에 저장한 후
saveAll()로 저장한다면 같은 인스턴스 내의 함수save()를 호출하므로, 프록시를 거치지 않는다.따라서 한 번의 많은 엔티티를 저장할 때에는
save()보다는saveAll()이 성능상 좋다.
Last updated