Class.forName("com.mysql.jdbc.Driver");传的是字符串,其可配置性更强.可通过配置文件直接配置数据库驱动.其运行结果与DriverManager.registerDriver(new Driver());是一样的.因为Driver类加载时虚拟机会执行其类定义的static方法块,方法块内调用了DriverManager.registerDriver(new Driver());而DriverManager.registerDriver(new Driver());则是存手工编码,后期修改数据库的工作量是需要手动更改代码,而不是想上面一样,通过修改配置文件中的数据库驱动的对象全路径的字符串就行.
所以Class.forName("com.mysql.jdbc.Driver");是教科书上推荐使用的方法.

解决方案 »

  1.   

    forName类似于找到那个类名并初始化,要是不想初始化可以通过增加参数去更改,具体看下api
    给个例子你就明白了,
    forName(“A”).new Instanct();//我应该拼错,你自己去开发环境下看看
    等价于new A();
    注意,有参数的构造函数就没有办法了,然后你的那个只是找到驱动,为什么就可以了呢,因为那个驱动器里面有个static块,他通过加载那个类然后调用静态块去注册这个驱动,因此,你导入那个类然后 new Driver();也是可以实现相同的效果的,多看源码才可以
      

  2.   

    import只是给编译器看的,运行时jvm根本不知道有它;Class.forName()是加载类的代码,类中静态块中的代码被执行,加载了驱动
      

  3.   

    是hibernate的配置文件,一般是hibernate.cfg.xml
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>