番外篇jdbc连接驱动源码分析

博客详细分析了JDBC驱动连接的实现过程,包括Class.forName的使用、DriverManager如何注册驱动以及getConnection方法的工作原理。文中指出,尽管网上有观点认为JDBC违反了双亲委派模型,但实际分析表明并非如此。
摘要由CSDN通过智能技术生成

在查找类加载器和双亲委派相关的文章时想找一个违反双亲委派相关的例子,网上说jdbc就属于违法双亲委派的典型,虽然最后发现其实并没有违反双亲委派,但也把这东西总结一下,发个博客吧

我们平时写jdbc时通常会像下面这样创建

			Class.forName(driver);
            conn = DriverManager.getConnection(url,username,password);

我们知道,Class.forName(driver),实际上只调用了对应的驱动包中的一段静态块,如下

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    public Driver() throws SQLException {
    }

    static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }
}

而registerDriver方法最终调用了addIfAbsent方法将驱动包传入的类添加进DriverManager的一个集合中

public static void registerDriver(java.sql.Driver driver,
            DriverAction da)
        throws SQLException {

        /* Register the driver if it has not already been added to
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值