Java載入資料庫連線驅動為什麼要用Class.forName()方法?
阿新 • • 發佈:2019-02-08
靜態初始化過程,可以閱讀一下Thinking in Java 2nd 的第5-8章
JDBC提供的DriverManager類用於跟蹤所有可用的JDBC驅動,並在使用者需要時選擇合適的驅動提供給使用者
但是其跟蹤不是自動的,必須由可用的JDBC驅動的Driver類自己在DriverManager上進行註冊
但是這個註冊過程一般是由Driver類載入的時候自動完成的
Class.forName("org.postgresql.driver");
這句就是為了載入這個類進入記憶體用的
而在一個類載入入記憶體的時候,類中的靜態初始化過程會執行,關於這部分就需要你去Thinking inJava裡去看了
而剛才所說的Driver類在DriverManager上註冊的過程,事實上就是在這個靜態初始化塊中完成的
也就是說Class.forName("org.postgresql.driver");這句話在這裡的用處就是
強制JVM將org.postgresql.Driver這個類載入入記憶體,以便將其註冊到DriverManager類上去