1. 程式人生 > >Java載入資料庫連線驅動為什麼要用Class.forName()方法?

Java載入資料庫連線驅動為什麼要用Class.forName()方法?

靜態初始化過程,可以閱讀一下Thinking   in   Java   2nd   的第5-8章   

JDBC提供的DriverManager類用於跟蹤所有可用的JDBC驅動,並在使用者需要時選擇合適的驅動提供給使用者
但是其跟蹤不是自動的,必須由可用的JDBC驅動的Driver類自己在DriverManager上進行註冊
但是這個註冊過程一般是由Driver類載入的時候自動完成的

Class.forName("org.postgresql.driver");
這句就是為了載入這個類進入記憶體用的
而在一個類載入入記憶體的時候,類中的靜態初始化過程會執行,關於這部分就需要你去Thinking in
Java
裡去看了

而剛才所說的Driver類在DriverManager上註冊的過程,事實上就是在這個靜態初始化塊中完成的

也就是說Class.forName("org.postgresql.driver");這句話在這裡的用處就是
強制JVM將org.postgresql.Driver這個類載入入記憶體,以便將其註冊到DriverManager類上去