为何要手工的装载数据库驱动?

直接使用JDBC链接数据库时,为何总是Class.forName()一把?而使用其它第三方类库时,都是直接使用即可,不是说用到某个类时,类加载器会自动加载吗?
[b]问题补充:[/b]
lovewhzlq 能不能解释一下为什么不是类加载器自动加载该驱动,加载这个驱类时,静态块也就会被执行了,为什么不是这样呢?

如果你非要以new的方式来创建也是没问题的,

只不过一般数据库驱动都是以配置文件的形式来配置的,那自然就是配置驱动类的全限定类名嘛,所以自然就只能用Class.forName()来加载驱动了

这是因为驱动类里有static静态块,
用Class.forName()就能加载这部分static静态块,
而static静态块做的事就是加载并注册驱动类

你可以去看看驱动类的源码吧

为会么要使用驱动呢。简单说这个是程序与数据库交流的一种途径,当程序打开数据库端口,连接上,得有一个方案能够与数据库进行交互。
所以在驱动中都是这么一些类:如何去查数据库,如何取查询结果,如果处理事务等。

并且,由于每个数据库中的处理方式不一致,所以这些驱动都不一致。那么很简单,就在程序中注册你要使用的是什么驱动,oracle的还是mysql的。这就是JDBC使用了Class.forName()的原因。
但是用户觉得不方便,因为如果连接上oracle,那么驱动基本上就是定下来的。所以在通常程序中,都是通过配置文件配置的。
Hibernate的配置文件中,就有驱动的设置,可以详细看看。