Dev/Web

[JDBC] Class.forName()의 의미와 궁금점

잼카이브 2022. 12. 6. 02:21

 

jdbc 드라이브 로딩 시 사용되는 Class.forName() 메소드의 의미가 궁금했다.

왜 뜬금없이 DriverManager는 getConnection하는지

딱히 리턴해줄 필요가 없는건지.. 정확히 뭘 하는 메소드인지.. 등등

 

아래 링크에서 이해하는 데 도움을 얻었다.

아직 자바와 객체지향에 관한 지식이 짧아 완벽하게 습득하진 못했지만 반복해서 읽어보면서 이해도를 높여야겠다.

 

어쨌든 오늘 기준으로 이해한 것

Class.forName()은 클래스의 정보를 JVM에 로드하는 역할을 한다.

+) 심지어 Driver가 알아서 자기자신을 초기화 하고 DriverManager에 등록까지 한다. (Driver 클래스, OracleDriver static 구문 참조) 그래서 사용자가 DriverManager에 객체를 따로 만들어서 담아줄 필요가 없었던 것이다.

 

또한, 이를 사용하면 여러 조건에서 Driver 로드를 다르게 해줄 때, 모든 드라이버를 로드해주지 않아도 된다는 장점이 있다. 막 서치하다가 찾은 비유였는데, 즉석김밥집에서 손님이 뭘 시킬 지 모르는데 미리 만들어두는 건 비효율적이기 때문에 주문이 들어오면 그때서야 김밥을 만드는 것이 Class.forName()이라고 보면 된다고 한다. 어느정도는 이해가 될 것도 같다.

 

 

아래 블로그들을 여러번 읽어볼 것.

 

https://brilliantdevelop.tistory.com/54

 

JDBC Class.forName()동작과 사용이유

자바 파일(Java file), 클래스 파일(Class file) 자바 파일은 확장자가 .java 인 파일로서 자바 언어로 소스 코드를 작성할 때 그 내용을 적는 파일을 뜻합니다. 그리고 이 자바 파일을 자바 컴파일러로

brilliantdevelop.tistory.com

https://kyun2.tistory.com/23

 

[Java 궁금증] Class.forName()은 어떻게 동작할까?

JDBC 란 자바에서 제공하는 데이터베이스와 연결하여 데이터를 주고 받을 수 있도록 하는 인터페이스입니다.JDBC를 사용하는 방법은 어떤 데이터베이스를 사용하던지 같습니다. 방법은 간략하게

kyun2.tistory.com

https://pjh3749.tistory.com/250

 

[JDBC] MySQL 드라이버 Class.forName()의 비밀 - 로드만 했을 뿐인데 getConnection()이 가능하다고?

도대체 JDBC드라이버는 Class.forName()으로 로딩만 했을 뿐인데 어떻게 DriverManager 에서 사용이 되는 것일까? Class.forName의 호출 Class 클래스는 JVM에서 동작할 클래스들의 정보를 묘사하기 위한 일종의

pjh3749.tistory.com