new com.mysql.jdbc.Driver()为什么Driver会创建两次
生活随笔
收集整理的這篇文章主要介紹了
new com.mysql.jdbc.Driver()为什么Driver会创建两次
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在學習JDBC的時候,通常有兩種方式去注冊數據庫驅動程序(這里采用MySQL數據庫),分別為:
Java代碼
那么這兩種方式有什么異同呢? 查看com.mysql.jdbc.Driver源碼, 發現如下靜態代碼塊: 當加載Driver類時,靜態代碼塊也會new一個Driver對象。
package com.mysql.jdbc; public class Driver extends NonRegisteringDriver implements java.sql.Driver {//// Register ourselves with the DriverManager//static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException("Can't register driver!");}}...... }那么, Class.forName(“com.mysql.jdbc.Driver”)的時候,也會首先去執行這個靜態代碼塊,于是和DriverManager.registerDriver(new Driver())有了相同的效果。
那么對于這兩種方法,在這里,推薦使用第二種,即Class.forName(“類名”)的方式。原因有兩點
1、在我們執行DriverManager.registerDriver(new Driver())的時候,靜態代碼塊也已經執行了,相當于是實例化了兩個Driver對象。
2、 DriverManager.registerDriver(new Driver())產生了一種對MySQL的一種依賴。而Class.forName的方式我們完全可以在運行的時候再動態改變。
?
總結
以上是生活随笔為你收集整理的new com.mysql.jdbc.Driver()为什么Driver会创建两次的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《java多线程编程实战指南 核心篇》读
- 下一篇: svn的merge,解决冲突