inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 DB 1편 - 데이터 접근 핵심 원리

트랜잭션 - 적용1

트랜잭션 질문입니다.

311

이용준

작성한 질문수 3

0

트랜잭셔널 어노테이션 잘 쓰다가 갑자기 혼란이 와서요..

void updateName(string id){

   person=repo.findById(id)

   person.setName() // 변경 감지에 의한 update 쿼리

}

이런경우에 트랜잭셔널 걸어줄 필요가 없다는 글을 봐서 혼란이 옵니다..

제가 생각했을때는

findById로 조회하고--1
setName으로 변경--2

여기서 1이 실행됐을때
다른 트랜잭션B가 침투해서 해당 데이터를 임의로 바꿔주고 커밋까지 하면 
2가 실행되는 순간 트랜잭션B가 그냥 무시되는것 아닌거 생각했어요.
그래서 1,2는 무조건 atomic하게 연결되어야된다 생각을했는데..

그래서 꼭 @Transactional 을 해줘야 한다고 생각했는데 아니라면 그 이유가 궁금합니다!

spring

답변 1

1

나무늘보

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

트랜잭션 B가 먼저 commit 되었다는 먼저 수정요청을 했다는 뜻이 됩니다. 그래서 B가 먼저 데이터베이스에 반영된 후 트랜잭션  A의 값을 데이터베이스에 다시 반영합니다. 트랜잭션이 없다고 생각하더라도 결과는 같습니다. 그런 맥락에서 트랜잭션이 없어도 된다고 이야기 한것 같습니다.

.

값의 업데이트나 삭제는 경우에 따라 순서에 민감하지 않은 경우도 있습니다.문제는 조회할 때 어떤 값이 보여지는지가 중요하겠지요. 만약 트랜잭션 A가 값을 조회한 이후 다른 트랜잭션에서 이 값을 조회할 수 없도록 하고 싶다면 그 또한 가능합니다. 이때는 exclusive lock 등을 사용할 수 있습니다.


감사합니다.

트랙잭션 격리수준 선택에 대해서 질문

0

25

1

spring initialiser 어떤걸 선택해야될지 모르겠어요

0

61

2

트랜잭션 템플릿이 체크예외는 커밋하는 이유가 궁금합니다.

0

73

1

jdbc 학습하다 궁금해서 질문드려요

0

104

1

정상이체와 이체중 예외발생 차이

0

86

2

이번 강의부터가 JDBC 직접 사용 맞나요?

0

103

1

순수한 서비스 계층에 대한 의문???

0

94

2

3_4test, 4test 자동 리소스 안됨

0

66

2

데이터베이스 선택 관련 질문.

0

77

2

after 메서드 사용 유무

0

67

2

데이터베이스 접근 및 DB 락

0

65

1

@SpingBootTest, @TestConfiguration

0

68

1

Read Committed 격리 수준 사용 관련 질문

0

62

1

AopCheck Test 부분의 EnhancerBySpring 확인 법??

0

74

2

커리큘럼 관련 질문

0

85

1

서비서 계층 스프링 프레임워크 사용

0

100

1

validation(toMember)의 위치

0

91

2

데이터 계층에서 서비스 로직의 datasource를 인식하는 방법

0

178

2

member 상수 질문

0

140

2

ctrl + F6 이후로 con 인식이 안 됩니다

0

171

2

DrivenManager 와 Connection 반환에 대한 질문입니다!

0

121

1

섹션5 트랜잭션 템플릿관련 질문(이기종 DB)

0

127

1

세션1 테이블 조회결과 그림은 Redo 로그에 속하나요?

0

107

1

트랜잭션이 필요하지 않은 경우 DB 대신 파일 시스템을 사용하는 것이 더 효율적인가?

0

105

1