inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 ORM 표준 JPA 프로그래밍 - 기본편

Hello JPA - 애플리케이션 개발

트랜잭션

223

SJ

작성한 질문수 157

0

안녕하세요. 이건..그냥 궁금해서 여쭤보는건데요

 

우리가 트랜잭션을 걸지않아도 데이터베이스에서 내부적으로 알아서  트랜잭션 개념을 가지고있다고하면 

저희가 그럼 트랜잭션을 선언해서 할 필요성이 있을까용 ?

JPA java

답변 1

0

나무늘보

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

데이터베이스는 테이블의 로우 별로 트랜잭션을 관리합니다. 그러나 각 쿼리들 간의 관계를 알 순 업습니다.

만약 은행에서 A가 B에게 천원을 이체 한다고 하면 다음과 같은 쿼리가 발생할텐데요.

1) A, B 계좌 및 잔고 조회

2) A 계좌 천원 차감

3) B 계좌 천원 증가

 

데이터베이스는 여러 사람이 동시에 계좌/잔고 테이블에 접속할때 문제(동시성 문제)를 트랜잭션으로 관리할 순 있으나 1), 2), 3) 의 프로세스가 '하나의 작업'으로 처리되어야 한다는 사실은 알 수 없습니다. (하나의 작업이란 건, 1), 2), 3) 중 단 하나의 작업이라도 실패하면, 모든 작업을 실패로 처리한다는 뜻입니다. 원자성이라고도 합니다)

 

그래서 애플리케이션에서도 트랜잭션 단위로 프로세스를 묶을 수 있다면 매우 유용합니다. 

데이터베이스는 보통 모든 쿼리가 실행된 직후 자동으로 커밋 을 하도록 되어있는데요,

애플리케이션은 이 자동 커밋 설정을 제어하며 모든 프로세스의 원자성을 구현합니다.

 

감사합니다.

리뉴얼 시기

0

83

2

변경감지(더티체킹) 이후 플러시할 경우의 쿼리

0

76

1

단일 테이블 시 null 값과 연관관계 필요성 질문

0

70

1

벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?

0

105

2

inheritance startegy 선택시 고려사항

0

76

1

Entity 동등성 비교

0

70

1

실무 조언 관련 질문입니다.

0

100

1

H2데이터베이스 파일 생성

0

114

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

1

102

2

수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?

0

87

1

JPQL 메소드와 락

0

88

1

Delivery @OneToOne

0

104

1

17강 4~5분대 테이블 값 조회가 안됩니다.

0

154

2

UnsupportedOperationException 발생

0

170

3

H2 Database 연결이 안됩니다.

0

135

2

연관관계 매핑 질문드립니다.

0

132

2

h2데이터베이스 실행오류

0

148

2

persistence.xml

0

160

2

양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?

0

125

1

영속성 컨텍스트

0

104

1

JPA 프록시

0

141

1

Native Query와 MyBatis

0

118

1

영속성 컨텍스트는 어떤 메모리에 저장되는건가요?

0

130

1

임베디드 타입 예시 코드 관련 질문

0

173

3