본문 바로가기

스파르타 부트캠프(spring)

[내일배움캠프_Spring] 자바 Spring 입문_save(), saveAndFlush()_230119

.어제 깃허브 고수 팀원분이 알려주신 방법으로 혼자 디벨롭 머지까지 시도했는데 머지는 됬지만 중간에 구조랑 기능을 전반적으로 손봤어서 크게 충돌이 났다. 덕분에 고수 팀원님이 충돌해결까지 해주셔서 ...감삼다!!


JPA 동작 원리

  • Java 객체와 관계형 DB 사이를 매핑하는 ORM 기술 표준
  • 인터페이스 (=기술 표준) 이다.

save() 메소드

  • 객체 지향 설계 중심에서의 Entity 객체를 ORM 을 이용하여 DB에 저장하는 기능
  • save() 메소드는 바로 DB 에 저장되지 않고 영속성 컨텍스트에 저장되었다가 flush() 또는 commit() 수행 시 DB에 저장됨
save() 메소드는 엔티티를 DB에 저장하는 기능을 수행

save() 메소드는 Spring Data 에서의 정의한 CrudRepository 인테페이스의 메소드.
  • postReository.save(new Post(requestDto, user.getId))

 

saveAndFlush() 메소드

  • 즉시 DB에 변경사항을 적용하는 방식
save() 메소드와는 다르게 saveAndFlush() 메소드는 실행중에 즉시 data를 flush한다.

saveAndFlush() 메소드는 Spring Data JPA에서의 정의한 JpaRepository 인테페이스의 메소드.
saveAndFlush() 메소드는 아직 commit되지 않은 같은 트랙잭션 내에서 먼저 처리된 결과를 후에 사용할 때 사용된다.

ex.) save() 메소드는 DB에 동기화 시키지 않았기 때문에 스토어드 프로시저는 변경사항을 알 수 없고 이로 인해 제대로 동작X.

  • save() 메소드는 영속성 컨텍스트에 저장하는 것이고 실제로 DB 에 저장은 추후 flush 또는 commit 메소드가 실행될 때 이루어짐
  • saveAndFlush() 메소드는 즉시 DB 에 데이터를 반영함