gpt4 book ai didi

java - 为什么 JDBC 驱动程序在类的静态初始值设定项中注册自己?

转载 作者:行者123 更新时间:2023-11-30 07:34:20 25 4
gpt4 key购买 nike

使用 Class.forName() 加载 JDBC 驱动程序而不是驱动程序提供一些静态方法来做同样的事情背后的逻辑是什么?

例如,为什么不改为调用 SomeDriverClass.loadDriver(); 并继续正常获取连接?对 java.sql.DriverManager.registerDriver() 的调用不能以这种方式发生的原因是什么?

最佳答案

这样,代码在编译期间就不需要在类路径中包含驱动程序类。您不希望编译时类路径中有无数过去、现在和 future 的不同 JDBC 驱动程序来使您的 JDBC 代码与所有这些数据库兼容。您不想每次升级/替换驱动程序或数据库时都重新编译代码。您所需要的只是 String 中的驱动程序类名称,它可以在外部配置(通常是属性或 xml 文件)。

换句话说:可移植性和可重用性。

如果是自用,想怎么弄就怎么弄。但是如果你是在一个要公开发布的库中做的(例如 ORM 或一些数据库管理工具),它不会变得流行,因为最终用户必须获取源代码并在每次不这样做时更改/重新编译它'支持他们的数据库。

关于java - 为什么 JDBC 驱动程序在类的静态初始值设定项中注册自己?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5227510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com