浅谈Class.forName()在JDBC中的作用

目录

1、Class.forName()有什么作用呢?

2、为什么不直接new?

3、为什么删除Class.forName("com.mysql.jdbc.Driver")还是可以运行?


JDBC是Bridge模式的典型应用,DriverManager就是其中的Abstraction;java.sql.Driver是Implementor,com.mysql.jdbc.Driver是Implementor的一个具体实现。前一个Driver是一个接口,后者却是一个类,它实现了前面的Driver接口。 Bridge模式中,Abstraction(DriverManager)是要拥有一个Implementor(Driver)的引用的。

一般,我们在连接数据库时,会使用如下的代码:

try {
    Class.forName("com.mysql.jdbc.Driver");
    connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
} catch (Exception e) {
    e.printStackTrace();
}

1、Class.forName()有什么作用呢?

首先,我们都知道,在java中Class.forName()方法在java中的作用是1、用于在JVM中查找并加载指定的类到内存中。2、初始化这个类

此时,我们将"com.mysql.jdbc.Driver"作为参数传入,是让JVM到"com.mysql.jdbc"路径下,找到Driver类并将其加载到内存中。

我们一起来看一下Driver类的详细代码:

public class Driver extends NonRegisteringDriver
  implements java.sql.Driver
{
  public Driver() throws SQLException{
  }
​
  static
  {
    try
    {
      DriverManager.registerDriver(new Driver());
    } catch (SQLException E) {
      throw new RuntimeException("Can't register driver!");
    }
  }
}

Class.forName(“com.mysql.jdbc.Driver”)的作用实际上就是调用DriverManager的 registerDriver方法注册一个mysql的JDBC驱动(Driver)而已(简而言之,就是将mysql驱动注册到DriverManager中去)。

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值