Transaction

seni·2024년 7월 3일

JAVA

목록 보기
31/34

영속성 컨테스트와 트랜잭션의 생명주기

  • 스프링 컨테이너 환경에서는 영속성 컨텍스트와 트랜잭션의 생명주기가 일치한다

  • ->트랜잭션이 유지되는 동안은 영속성 상태도 유지됨

  • spring은 위 사진같은 상황에서 Transaction을 유지, 제어할 수 있도록 트랜잭션 전파 기능을 제공하고 있다

    • 서비스단에서 레퍼지토리 호출하는데, 그때 레퍼지토리에 있는 메서드까지 트랜잭션 환경을 이어짐 ->트랜잭션 전파!
      업로드중..
  • MemoRepsitory를 Autowired 사용해서 주입 받아 오고 있음

  • 위 사진에서 현재 test3 라는 메서드에서 memoRepository에 있는 createMemo를 부르는 것!

  • test3 메서드가 부모 메서드

  • 불림을 당하는 createMemo가 자식 메서드
    MemoRepository

  • em.find를 통해서 1번을 가져온다

  • setUsername, SetContents 해줘서 데이터를 바꿔준다

  • @Transaction 환경 걸어놨음 -> 변경 감지가 일어나면서 업데이트 쿼리가 일어난다

  • test3 부모 메서드에도 @Transaction 걸려있음

  • 실행하면..

  • createMemo 까지가 자식 메서드

  • 부모 메서드가 끝나면서 트랜잭션 업데이트가 일어난다???

REQUIRED 옵션

  • 부모 메서드에 Trasactional이 존재한다면, 자식 메서드에 트랜잭션은 부모 메서드 트랜잭션에 합류하게 됨 (트랜잭션이 이어지면서, 영속성 컨텍스트도 이어짐)
  • 자식 메서드가 끝날때 트랜잭션 커밋이 되는게 아니라, 부모까지 종료가 되니깐 커밋이 됨
  • 트랜잭션 전파 기능을 제공하면서, 계층 간에도 트랜잭션이 이어질 수 있는 것이다
profile
개발일지

0개의 댓글