关于Class.forName("com.mysql.jdbc.Driver");

jdgdf566 2013-11-23 10:40:54
如果只导入:
import com.mysql.jdbc.Driver;
不DriverManager.registerDriver(new Driver());

Class.forName("com.mysql.jdbc.Driver");
有什么区别?
...全文
163 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdgdf566 2013-11-24
  • 打赏
  • 举报
回复
引用 1 楼 zyb134506 的回复:
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");是教科书上推荐使用的方法.
struts中的配置文件?
WayneXuan 2013-11-24
  • 打赏
  • 举报
回复
是hibernate的配置文件,一般是hibernate.cfg.xml <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
jdgdf566 2013-11-23
  • 打赏
  • 举报
回复
引用 1 楼 zyb134506 的回复:
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");是教科书上推荐使用的方法.
struts中的配置文件?
WayneXuan 2013-11-23
  • 打赏
  • 举报
回复
import只是给编译器看的,运行时jvm根本不知道有它;Class.forName()是加载类的代码,类中静态块中的代码被执行,加载了驱动
a825395336 2013-11-23
  • 打赏
  • 举报
回复
forName类似于找到那个类名并初始化,要是不想初始化可以通过增加参数去更改,具体看下api 给个例子你就明白了, forName(“A”).new Instanct();//我应该拼错,你自己去开发环境下看看 等价于new A(); 注意,有参数的构造函数就没有办法了,然后你的那个只是找到驱动,为什么就可以了呢,因为那个驱动器里面有个static块,他通过加载那个类然后调用静态块去注册这个驱动,因此,你导入那个类然后 new Driver();也是可以实现相同的效果的,多看源码才可以
快乐的2 2013-11-23
  • 打赏
  • 举报
回复
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");是教科书上推荐使用的方法.

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧