inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

데이터베이스 연결

DriverManager 가 Driver 후보들을 가지는 방법

548

이민준

작성한 질문수 12

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)


2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
안녕하세요. 데이터베이스 연결을 보면서 궁금증이 생겼습니다.

DriverManager 는 제공받은 url 을 핸들링할 수 있는 Driver 구현체를 찾는다고 이해했는데요.

DriverManager 는 위의 검증 이전에 어떻게 Driver 구현체들을 후보로 리스트로 들고있게되나요?

spring

답변 3

2

김앵맹

'com.h2database:h2' 의존성 라이브러리의 org.h2.Driver 클래스에서 public static synchronized Driver load() 함수를 찾을 수 있습니다. 여기서 DriverManger를 직접 호출해서 자기 자신 즉 org.h2.Driver를 등록하는 것을 볼 수 있습니다.

public static synchronized Driver load() {
        try {
            if (!registered) {
                registered = true;
                DriverManager.registerDriver(INSTANCE);
            }
        } catch (SQLException e) {
            DbException.traceThrowable(e);
        }
        return INSTANCE;
    }

registerDriver() 메소드를 더 타고 들어가보면 DriverManager의 변수중 하나인 CopyOnWriteArrayList<DriverInfo> registeredDrivers에 저장되는 것을 확인할 수 있습니다.

아마 MySql, Oracle 등 다른 드라이버들도 각자 이런식으로 하지 않을까 생각합니다!

디버깅 모드를 사용하여 직접 확인해본 것이라 혹시 틀린 부분이 있다면 정정해주세요!

0

sjphone95

감사합니다

0

xxxxxseed

제가 질문을 제대로 이해했다면....build.gradle에 runtimeOnly 'com.h2database:h2' 의존성을 추가 했기 때문 아닐까요.

0

나무늘보

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

스프링부트를 사용하기 전 과거에는 프로젝트에 사용할 데이터베이스 드라이버(jar 파일)을

프로젝트 라이브러리 안에 포함하는 식으로 사용했었습니다.

질문하신 내용이 이 부분이 맞는지 궁금하네요 :)

감사합니다.

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

0

43

2

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

0

55

1

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

0

87

1

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

0

73

2

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

0

91

1

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

0

84

2

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

0

61

2

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

0

73

2

after 메서드 사용 유무

0

64

2

데이터베이스 접근 및 DB 락

0

59

1

@SpingBootTest, @TestConfiguration

0

59

1

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

0

53

1

AopCheck Test 부분의 EnhancerBySpring 확인 법??

0

70

2

커리큘럼 관련 질문

0

79

1

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

0

90

1

validation(toMember)의 위치

0

84

2

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

0

167

2

member 상수 질문

0

126

2

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

0

158

2

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

0

112

1

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

0

117

1

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

0

104

1

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

0

99

1

강의 14분쯤 Exception 질문

0

117

2