<스프링레거시>JDBC 연결 확인하는 TEST 뜯어보기

ACAI BERRY DEVELOVER·2023년 2월 17일
0

JDBC드라이버는 Class.forName()으로 로딩만 했을 뿐인데 어떻게 DriverManager 에서 사용이 되는 것일까?

Class.forName의 호출
Class 클래스는 JVM에서 동작할 클래스들의 정보를 묘사하기 위한 일종의 메타 클래스이다. 객체의 참조 카운트가 0가 되면 해당 인스턴스는 더 이상 가리키는 참조 변수가 없는 것이므로 GC의 대상이 된다. 그런데 JDBC는 생성시키고 끝난다. 그러면 GC가 되지 않도록 하는 무언가가 있다고 한다.

JDBC 드라이버와 같이 인스턴스를 별도로 관리하지 않는 대부분의 클래스의 경우, 그 클래스가 스스로의 인스턴스를 정적 블록을 통해 생성하고 관리한다. 정적 블록을 갖는 클래스들은 Class.forName() 만 호출해도 초기화가 수행된다.


🌿 jdbc 4.0 드라이버는 Class.forName()으로 굳이 초기화하지않아도 자동으로 로드되어진다고 한다. 참고 !

출처:

profile
쓸때 대충 쓰지 말고! 공부하면서 써!

0개의 댓글