inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

정리

커넥션과 세션의 관계, 세션과 트랜잭션의 관계가 궁금합니다.

487

지강훈

작성한 질문수 1

0

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]

스프링 DB 1편 트랜잭션 이해 파트에서 질문입니다.

"애플리케이션에서 DB 트랜잭션을 사용하려면 트랜잭션을 사용하는 동안 같은 커넥션을 유지해야한다. 그래야 같은 세션을 사용할 수 있다"

 

여기서 세션의 개념이 정확히 이해가 가지 않아 질문드립니다.

찾아본 결과 하나의 커넥션에는 여러 개 세션이 존재할 수도, 아예 없을 수도 있다고 하고, 세션은 전달된 SQL이 실행되는 하나의 논리적 단위라고 합니다.

 

강의 설명에 따르면 같은 세션을 유지해야만 트랜잭션이 하나의 단위로 처리되기 때문에 이를 위해 같은 커넥션을 사용해야 한다고 이해했습니다. 그렇다면 같은 커넥션을 사용하는 것을 보장했을 때 항상 같은 세션을 사용하는 것도 보장되는 것인가요? 한 커넥션이 여러 세션을 사용하는 경우는 어떤 경우인가요? 여러 세션을 사용하게 되면 여러 세션에서 여러 개의 트랜잭션이 실행될 수 있는 것인가요?

 

spring mvc spring-jdbc

답변 1

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.

세션과 커넥션은 데이터베이스와의 연결을 관리하는 데 사용되는 개념입니다. 커넥션은 데이터베이스와의 물리적인 연결을 나타내며, 세션은 커넥션을 통해 데이터베이스를 사용하는 사용자 또는 애플리케이션과 관련된 상태 정보를 유지하는 개념입니다.

하나의 커넥션에 여러 개의 세션이 존재할 수 있고, 여러 개의 커넥션이 하나의 세션을 공유할 수도 있습니다. 세션은 데이터베이스에 대한 연산을 실행하는 논리적인 단위입니다. 따라서 같은 커넥션을 사용한다고 해서 항상 같은 세션을 사용하는 것은 아닙니다. 세션은 데이터베이스에 대한 연산의 시작과 종료를 나타내며, 한 번의 연산에 대해서는 동일한 세션을 유지하는 것이 원칙이지만, 연산이 종료되면 세션은 닫히고 새로운 세션이 열릴 수 있습니다.

트랜잭션은 데이터베이스에 대한 일련의 동작을 하나의 논리적인 단위로 묶는 개념입니다. 커넥션과 세션은 트랜잭션을 관리하는 데 사용됩니다. 트랜잭션 동안 같은 커넥션을 유지해야 한다는 것은 동일한 세션을 유지해야 한다는 것과 같은 의미입니다. 따라서 같은 커넥션을 사용하면 동일한 세션을 사용할 수 있게 됩니다.

하지만, 세션과 트랜잭션은 서로 다른 개념이기 때문에, 같은 커넥션을 사용한다고 해서 항상 같은 세션을 사용하는 것을 보장할 수는 없습니다. 트랜잭션이 종료되면 세션도 닫히고, 트랜잭션을 시작할 때마다 새로운 세션이 열릴 수 있습니다.

결론적으로, 같은 커넥션을 사용하는 것은 트랜잭션을 하나의 단위로 처리하기 위해 필요한 조건이지만, 항상 같은 세션을 사용한다는 것은 보장되지 않습니다.

더 자세한 내용은 강의나 관련 자료를 참고하시면 도움이 될 것입니다. 감사합니다.

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

0

38

2

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

0

51

1

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

0

84

1

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

0

70

2

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

0

89

1

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

0

82

2

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

0

59

2

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

0

69

2

after 메서드 사용 유무

0

59

2

데이터베이스 접근 및 DB 락

0

57

1

@SpingBootTest, @TestConfiguration

0

57

1

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

0

50

1

AopCheck Test 부분의 EnhancerBySpring 확인 법??

0

69

2

커리큘럼 관련 질문

0

78

1

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

0

89

1

validation(toMember)의 위치

0

84

2

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

0

166

2

member 상수 질문

0

124

2

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

0

154

2

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

0

110

1

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

0

116

1

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

0

103

1

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

0

98

1

강의 14분쯤 Exception 질문

0

116

2