反射

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());  
 	} 

 } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章