본문 바로가기

Back/Java

[JPA] save() vs saveAndFlush() 차이

 

배경
@Transactional 이 있는 메소드에서 set을 여러번할때 차이가 나타나는데,
같은 컬럼을 여러번 set할 경우(update쿼리),  (*다른컬럼일때 확인해볼것)

 

 

save()
마지막 set에 대해서만 update 쿼리가 출력되고, 트랜잭션메소드가 다 끝난 후에 DB에 반영

 

 

saveAndFlush()
set할때마다 update쿼리가 출력되고, DB에는 트랜잭션메소드가 다 끝난 후에 한번만 반영.
update쿼리가 출력된 것은 JPA내부적으로 저장된것으로 보임.
flush는 DB가 아니라 SQL 저장소 내로 flush를 하는 과정.