Class.forName()方法
在jdbc連接數據庫中的應用
在使用jdbc方式連接數據庫時,爲什麼要執行Class.forName(‘驅動類名’)方法了:將驅動類的class文件裝載到內存中,並且形成一個描述此驅動類結構的Class類實例,並且初始化此驅動類,這樣jvm就可以使用它了,這就是Class.forName()方法的含義。
有數據庫開發經驗朋友會發現,爲什麼在我們加載數據庫驅動包的時候有的卻沒有調用newInstance( )方法呢?即有的jdbc連接數據庫的寫法裏是Class.forName(xxx.xx.xx);而有一 些:Class.forName(xxx.xx.xx).newInstance(),爲什麼會有這兩種寫法呢?
剛纔提到,Class.forName("");的作用是要求JVM查找並加載指定的類,如果在類中有靜態初始化器的話,JVM必然會執行該類的靜態代碼 段。而在JDBC規範中明確要求這個Driver類必須向DriverManager註冊自己,即任何一個JDBC Driver的 Driver類的代碼都必須類似如下:
public class MyJDBCDriver implements Driver {
static {
DriverManager.registerDriver(new MyJDBCDriver());
}
}