JAVA JDBC常見面試題及答案

什麼是jdbc,在什麼時候會用到它?

jdbc的全稱是java database connection,也就是java資料庫連線,我們可以用它來操作關係型資料庫。jdbc接口及相關類在java.sql包和javax.sql包里。我們可以用它來連線資料庫,執行sql查詢,存儲過程,並處理返回的結果。

jdbc接口讓java程式和jdbc驅動實現了松耦合,使得切換不同的資料庫變得更加簡單。

有哪些不同類型的jdbc驅動?

有四類jdbc驅動。和資料庫進行互動的java程式分成兩個部分,一部分是jdbc的api,實際工作的驅動則是另一部分。

a jdbc-odbc bridge plus odbc driver(類型1):它使用odbc驅動連線資料庫。需要安裝odbc以便連線資料庫,正因為這樣,這種方式現在已經基本淘汰了。

b native api partly java technology-enabled driver(類型2):這種驅動把jdbc調用適配成資料庫的本地接口的調用。

c pure java driver for database middleware(類型3):這個驅動把jdbc調用轉發給中間件伺服器,由它去和不同的資料庫進行連線。用這種類型的驅動需要部署中間件伺服器。這種方式增加了額外的網路調用,導致性能變差,因此很少使用。

d direct-to-database pure java driver(類型4):這個驅動把jdbc轉化成資料庫使用的網路協定。這種方案最簡單,也適合通過網路連線資料庫。不過使用這種方式的話,需要根據不同資料庫選用特定的驅動程式,比如ojdbc是oracle開發的oracle資料庫的驅動,而mysql connector/j是mysql資料庫的驅動。

jdbc是如何實現java程式和jdbc驅動的松耦合的?

jdbc api使用java的反射機制來實現java程式和jdbc驅動的松耦合。隨便看一個簡單的jdbc示例,你會發現所有操作都是通過jdbc接口完成的,而驅動只有在通過class.forname反射機制來載入的時候才會出現。

我覺得這是java核心庫里反射機制的最佳實踐之一,它使得應用程式和驅動程式之間進行了隔離,讓遷移資料庫的工作變得更簡單。在這裡可以看到更多jdbc的使用示例。