inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Hello JPA - 애플리케이션 개발

트랜잭션

219

SJ

작성한 질문수 157

0

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

 

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

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

JPA java

답변 1

0

나무늘보

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

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

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

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

2) A 계좌 천원 차감

3) B 계좌 천원 증가

 

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

 

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

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

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

 

감사합니다.

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

0

58

2

inheritance startegy 선택시 고려사항

0

42

1

Entity 동등성 비교

0

47

1

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

0

69

1

H2데이터베이스 파일 생성

0

78

2

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

0

70

2

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

0

65

1

JPQL 메소드와 락

0

63

1

Delivery @OneToOne

0

73

1

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

0

105

2

UnsupportedOperationException 발생

0

97

3

H2 Database 연결이 안됩니다.

0

103

2

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

0

95

2

h2데이터베이스 실행오류

0

116

2

persistence.xml

0

121

2

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

0

90

1

영속성 컨텍스트

0

77

1

JPA 프록시

0

108

1

Native Query와 MyBatis

0

83

1

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

0

97

1

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

0

126

3

명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요

0

103

3

인텔리제이 패키지 커서 단축키 질문

0

113

2

혹시 현재는 ID 데이터 타입이 String이면 안되나요?

0

156

1