DriverManager 가 Driver 후보들을 가지는 방법
548
작성한 질문수 12
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
예
[질문 내용]
안녕하세요. 데이터베이스 연결을 보면서 궁금증이 생겼습니다.
DriverManager 는 제공받은 url 을 핸들링할 수 있는 Driver 구현체를 찾는다고 이해했는데요.
DriverManager 는 위의 검증 이전에 어떻게 Driver 구현체들을 후보로 리스트로 들고있게되나요?
답변 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 등 다른 드라이버들도 각자 이런식으로 하지 않을까 생각합니다!
디버깅 모드를 사용하여 직접 확인해본 것이라 혹시 틀린 부분이 있다면 정정해주세요!
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





