哪种forName方法与registerDriver加载和注册JDBC驱动程序的区别?
Joa*_*uer 83
Class.forName()根本不与JDBC直接相关.它只是加载一个类.
大多数JDBC驱动程序类通过调用在自己的静态初始化程序中注册registerDriver().
registerDriver() 是你几乎不需要自己调用的真实调用(除非你编写自己的JDBC驱动程序).
请注意,在JDBC 4 中,如果您的JDBC驱动程序是最新的,则不需要其中任何一个,因为可以使用服务定位机制找到驱动程序(即只是忽略该调用并像往常一样打开您的连接).有关详细信息,请参阅文档DriverManager:
在DriverManager的方法
getConnection和getDrivers已得到增强,支持Java标准版服务提供商的机制.JDBC 4.0驱动程序必须包含该文件META-INF/services/java.sql.Driver.此文件包含JDBC驱动程序实现的名称java.sql.Driver.例如,要加载my.sql.Driver类,META-INF/services/java.sql.Driver文件将包含以下条目:Run Code Online (Sandbox Code Playgroud)my.sql.Driver应用程序不再需要使用显式加载JDBC驱动程序
Class.forName().当前加载JDBC驱动程序的现有程序Class.forName()将继续工作而无需修改.
Dav*_*ara 20
切勿DriverManager.registerDriver()手动调用方法.JDBC规范要求驱动程序在加载类时注册自己,并通过加载类Class.forName().在JDBC 4中,驱动程序只能通过类路径自动加载.
DriverManager.registerDriver()手动是有潜在危险的,因为它实际上导致驱动程序被注册两次.如果您的代码要求您取消注册驱动程序以防止内存泄漏,那么您最终只会取消注册一次并留下第二个实例注册.
| 归档时间: |
|
| 查看次数: |
65501 次 |
| 最近记录: |