본문 바로가기

Spring/jpa7

spring data jpa batch insert 정리 source 는 Github 에 있습니다. spring data jpa batch insert 란? batch insert 라는 것은 여러 개의 SQL Statement 를 하나의 구문으로 처리할 수 있습니다. 정확히는 위 기능은 jdbc batch 기능이며, hibernate 에서 위 기능을 이용해서 처리하는 것입니다. (write-behind 를 통해) 여러 개의 구문을 여러 번 network 를 통해 보내는 것이 아니라 합쳐서 1개로 보내기에 성능 개선을 할 수 있습니다. (이게 핵심) jpa 의 경우 트랜잭션이 commit 되는 순간 한꺼번에 flush 가 이루어집니다. batch_size 옵션이 없다면 단건으로 데이터를 network 를 통해 보낼 것입니다. batch_size 설정해준다면 해당.. 2021. 5. 20.
spring data jpa save, saveAll 비교 source 는 Github 에 있습니다. save 동작 원리 save 동작 원리는 이전 글 참고하시면 됩니다. saveAll 동작 원리 간략히 설명하면 save(xxx) 는 1건을 저장하는 메소드이며, saveAll 은 다건이상의 데이터를 저장하는 메소드입니다. 아래 로직만 보면 saveAll 은 save() 를 호출하는 구조로 되어있습니다. 그럼 대량의 데이터를 처리할 때, save, saveAll 은 같은 성능으로 처리될까요? SimpleJpaRepository.java @Transactional @Override public S save(S entity) { if (entityInformation.isNew(entity)) { em.persist(entity); ret.. 2021. 5. 15.
spring-data-jpa save 동작 원리 source 는 Github 에 있습니다. spring-data-jpa save 동작 원리 spring-data-jpa save source 를 보면 아래와 같습니다. entity 가 새로 생성할 예정이라면 persist() 를 호출하고, 그렇지 않다면 merge() 를 호출합니다. SimpleJpaRepository.java /* * (non-Javadoc) * @see org.springframework.data.repository.CrudRepository#save(java.lang.Object) */ @Transactional @Override public S save(S entity) { if (entityInformation.isNew(entity)) { em.persist(entity); r.. 2021. 4. 28.