본문 바로가기
Jpa

Spring Repository 와 Entity 영속성 컨텍스트의 관계 파악

by 무대포 개발자 2020. 11. 19.
728x90
반응형

Spring Repository 와 Entity 영속성 컨텍스트의 관계 파악

Spring Repository 와 EntityManager 관계
  • 하나의 서비스에서 (같은 스레드) 여러 개의 repository 를 호출한다고 해보자.
  • 2개의 repository 는 1개의 EntityManager 를 공유하게 됨.
    • 같은 스레드에서 순차적으로 호출할테니 동시성 문제는 없겠지.
Spring 에서 Entity 변경 시, 일어나는 과정
  • Controller —> Service —> Repository select, save 호출 이라고 가정.
  • Controller 에는 Transaction 설정이 안돼있다면 Repository.save 를 호출하는 순간 Transaction 이 만들어지고 자동으로 커밋이 이루어질 것이다.
    • 왜냐하면 Spring Data Jpa 에서 제공해주는 JpaRepository 구현체는 SimpleJpaRepository 이며, save 메소드에는 @Transactional 이 설정돼있다.
  • 여기서 주의해야하는 점이. find —> 데이터 수정 —> save 순서가 아니라. save —> find —> 데이터 수정 순으로 이루어진다면 update 가 안일어난다. 왜냐하면 save 안에만 @Transactional 이 설정되있기 때문.
Reference

댓글