알이즈웰

JPA save 여러번 할 경우 update는 나중에 처리됨 본문

Programming/JAVA

JPA save 여러번 할 경우 update는 나중에 처리됨

2021. 6. 22. 15:39

update할 데이터를 먼저 save해도 update문은 항상 나중에 처리된다.

 

appleRepository.save(appleData); // appleData는 기존 pk를 세팅했고 update시킬 데이터
melonRepository.save(melonData); // pk 세팅 안 해서 insert할 데이터
bananaRepository.save(bananaData); // pk 세팅 안 해서 insert할 데이터

 

위와 같이 작성 시 순서대로 update - insert - insert 되는 것이 아니라

insert - insert -update된다.

심지어 update는 writer까지 다 끝나고 처리된다.

변경감지는 insert문 커밋 후 나중에 처리되나보다.

save하고 커밋(flush)할때 내부동작에 대해 어디서 들은것같긴한데 명확하게 포스팅된 글을 못 찾았다.

집 가서 책을 뒤져봐야겠다.

 

 

참고한 것들

https://okky.kr/article/308772

 

OKKY | JPA 에서 save(insert) 순서 때문에 오류가 발생해요

JPA (하이버네이트) 이용중인데, 연관관계가 있는 테이블에 값을 집어 넣는데 오류가 발생해요. 모든 테이블은 Entity 와 Repository 가 지정되어 있고, Transactional 로 선언되어 있는 Service 에서 실행되

okky.kr

 

https://www.popit.kr/jpa-%EB%B3%80%EA%B2%BD-%EA%B0%90%EC%A7%80%EC%99%80-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0/

 

JPA 변경 감지와 스프링 데이터 | Popit

JPA Java Persistence API 는 엔티티에 변경이 일어나면 이를 감지하여 자동으로 데이터베이스에 반영한다. 이런 특징에 익숙지 않은 상태에서 스프링 데이터 Spring Data JPA 를 사용하다 보면 예상치 못

www.popit.kr

 

https://jessyt.tistory.com/42

 

[JPA] JPA를 적용하며.. ( insert, update 분기 편 )

프로젝트를 진행하면서 JPA를 도입하였습니다. 지난글( [JPA] 프로젝트에 JPA를 적용하며.... ( save편 ) )에서는 JPA의 영속성을 이용하여 insert, update를 처리하는 방법에 대해서 정리하였습니다.  도

jessyt.tistory.com

 

https://woowabros.github.io/experience/2020/09/23/hibernate-batch.html

 

MySQL 환경의 스프링부트에 하이버네이트 배치 설정 해보기 - 우아한형제들 기술 블로그

안녕하세요. 배민상품시스템팀 권순규 입니다.저희팀에서 하이버네이트 배치 설정을 통해 대량 insert/update 시의 속도개선을 경험하여 공유드리고자 합니다.

woowabros.github.io

 

https://lovon.tistory.com/95

 

insert, update, delete 주의 사항(쿼리 실행 순서)

쿼리 동작 우선 순위 Hibernate는 영속성 컨텍스트에 등록된 쿼리에 대해 아래와 같은 우선 순위에 맞춰 쿼리가 실행되도록 되어있다. 로직을 다음과 같이 구현하는 경우 flush를 반드시 사용해야

lovon.tistory.com

 

https://velog.io/@rainmaker007/spring-data-jpa-batch-insert-%EC%A0%95%EB%A6%AC

 

spring data jpa batch insert 정리

source 는 Github 에 있습니다.batch insert 라는 것은 여러 개의 SQL Statement 를 하나의 구문으로 처리할 수 있습니다. 정확히는 위 기능은 jdbc batch 기능이며, hibernate 에서 위 기능을 이용해서 처리하는

velog.io

 

https://devhyogeon.tistory.com/6

 

JPA의 동일성 보장으로 인해 발생하는 데이터 동기화 문제

이 글의 내용과 예제에는 Spring Data JPA에서 사용하는 벌크 연산과 @Modifying의 clearAutomatically attribute에 대한 이해가 필요하므로 아래 글을 읽고 오시는 것을 추천드립니다. https://devhyogeon.tistor..

devhyogeon.tistory.com

 

https://jojoldu.tistory.com/415

 

더티 체킹 (Dirty Checking)이란?

Spring Data Jpa와 같은 ORM 구현체를 사용하다보면 더티 체킹이란 단어를 종종 듣게 됩니다. 더티 체킹이란 단어를 처음 듣는분들을 몇번 만나게 되어 이번 시간엔 더티 체킹이 무엇인지 알아보겠습

jojoldu.tistory.com

 

https://ict-nroo.tistory.com/130

 

[JPA] 영속성 컨텍스트와 플러시 이해하기

영속성 컨텍스트 JPA를 공부할 때 가장 중요한게 객체와 관계형 데이터베이스를 매핑하는 것(Object Relational Mapping) 과 영속성 컨텍스트를 이해하는 것 이다. 두가지 개념은 꼭 알고 JPA를 활용하자.

ict-nroo.tistory.com

 

 

Comments