jdbc驱动_总结加载JDBC驱动

总结加载驱动的两种方法以及高版本不需要手动添加驱动:

1)第一种import驱动类,然后实例化 (实例化的过程进行了类加载)

不导入写全包名即可。

1a32f25bc64bbd37c4be07b78d1fad81.png

2)第二种通过class.forName(String 驱动类),进行类加载(实质上加载驱动的)。

3)高版本的Oracle和MySql已经不用手动操作驱动类加载了,因为采用了最新的SPI技术,在DriverManager中的静态块初始化加载驱动。

4)总结:虽然大部分新版本不需要手动添加,但是选择Class.forName()手动加更加安全(应对低版本),第一种不推荐,不灵活,动态。

0aa7a2642461752e44a985f63be68e6b.png
1)Oracle驱动类的static静态块中将自身的实例传入了DriverManager中

2319a04334dd18e0001dc4f1ac2a67a5.png
2)DriverManager对该驱动类实例进行了加载。因此我们可以发现驱动类只需要运行static块,即驱动类加载就可以被DriverManager加载,而不需要创建驱动实例。

a7b8c826041c016b8cc8c630f9236bad.png
3)高版本的jdk的DriverManager的静态块,已经初始加载驱动类。因此只需要导入jdbc架包,就会自动被DriverManager加载。

总结Improt和Class.forName()的区别:

1)"import,可以说根本没有什么实质性的动作,只是让程序员少写些代码而已,使不使用import完全是个编码风格问题,编译的结果完全一样。

2)而class.forName()会加载类,这是一个“大动作”!加载类的时候,会初始化一个Class对象(注意不是类的实例),并初始化所有的static成员,执行static0代码块。当你不需要创建任何实例,而需要jvm去做一些事情的时候,使用class.forName)非常有用,这就是为什么数据库的驱动程序都是用这种形式来加载,因为加载驱动程序不需要创建对象实例。”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值