inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 데이터 JPA

Transaction commit 시 flush 자동호출, 그리고 DB commit 과 Transaction commit의 차이에 대해

723

ningning

작성한 질문수 4

0

안녕하세요 영한님.

 

질문하는 와중에도 용어자체에 혼동이 있어 매끄럽지 못한 점 미리 죄송합니다.

Q1. DB commit과 Transaction commit 에는 어떤 차이가 있나요?

Q2. A 사용자 a-1 쓰레드에서 정보 추가 em.flush() 를 하게되면 B사용자의 b-1 쓰레드에서 정보 조회가 가능해지는건가요?

-> flush 가 수행되면 "쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송한다."  라고 알고 있는데 이 말이 DB 에 실제 commit 이 되어 쿼리가 반영이 되는건지 궁금합니다.

Q3. 트랜잭션이 커밋되는 시점에 flush()를 호출하여 쓰기지연 SQL 저장소 -> DB 에 SQL 전송 이라고 이해했는데 맞나요?

 

감사합니다.

JPA spring java spring-boot

답변 1

0

나무늘보

안녕하세요, ningning 님! 공식 서포터즈 codesweaver 입니다.

1. Transaction commit 이라고 말씀하신 것은 애플리케이션(스프링)의 트랜잭션이 커밋되는 것을 말씀하신 것 같습니다. 사실 트랜잭션이 적용되기 위해선 데이터베이스 또한 트랜잭션을 지원해야 합니다.

데이터베이스는 보통 한 개의 쿼리를 실행 한 후 즉시 commit을 실행(auto commit)합니다. 그리고 이 정책은 사용자가 임의로 조절할 수 있는데 이를 이용해 애플리케이션 레벨에서 트랜잭션을 구현할 수 있습니다.

애플리케이션 에서 트랜잭션을 시작하게 되면, 실은 데이터베이스의 auto commit을 끄게 되며, 이후 애플리케이션 커밋이 발생할 때 데이터베이스에서 commit을 실행하고 다시 auto commit을 켜게 됩니다. 

결국, 트랜잭션은 데이터베이스에서 지원하는 것이며, 이를 응용해 애플리케이션 레벨에서 여러 프로세스를 하나의 트랜잭션으로 묶도록 지원하는 것이 애플리케이션 트랜잭션 입니다.

2. flush 는 데이터베이스 transaction commit을 동반합니다. 어떤 스레드에서 flush를 했다면 다른 스레드에서 이 데이터를 조회할 수 있습니다.

3. 네 맞습니다. 트랜잭션 커밋 외 jpql 쿼리 실행 전 등 flush를 호출하는 경우가 있습니다.

감사합니다.

changeTeam 메서드 질문

0

35

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

88

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

129

3

MemberRepository 구현체

0

73

1

pdf 표현 질문드립니다.

0

78

1

로그가 남지 않는 문제.

0

100

1

테스트 라이브러리가 강의는 junit4가 맞나요??

0

80

2

pdf 파일과 차이점이 있는 것같은데 문제 없나요?

0

79

2

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

0

104

2

Sort 인터페이스는 잘 사용 안하나요?

0

61

1

스캔대상 질문드립니다.

0

50

1

하이버네이트6에서의 최적화에 이은 질문

0

92

1

save() vs saveAndFlush DB 통신 횟수

0

61

1

순수 JPA 리포지토리 코드 수정부분

0

93

2

bulk연산 후 flush하는 이유를 모르겠어요

0

164

3

bulk insert 질문입니다.

0

191

2

교만했던 것 같아요.

0

152

1

RESTful 강의는 안하시는 건지 궁금합니다.

0

154

2

동적 테이블에 대한 질문

0

90

1

영속성 전이와 연관관계

0

142

2

강의 10:25 질문

0

80

1

단건 update 질문

0

104

2

엔티티 와 도메인의 경계

0

132

1

UsernameOnlyDto 타입 type mismatch 오류

0

123

1