加载JDBC驱动程序哪种方法更好?

时间:2009-04-01 17:50:45

标签: java jdbc

加载驱动程序有两种方法:

  1. Class.forName()

  2. DriverManager.registerDriver()

  3. 方法1内部也调用DriverManager.registerDriver,方法1是首选方法。

    但为什么呢?是否存在任何细微差别或性能等更好? 任何意见都赞赏..

5 个答案:

答案 0 :(得分:3)

如果使用Class.forName(),则不需要对特定JDBC驱动程序具有任何编译时依赖性。当您编写可以使用各种数据库的代码时,这尤其有用。

请考虑以下代码:

// Register the PostgreSQL driver
Class.forName("org.postgresql.Driver");

现在将其与:

进行比较
import org.postgresql.Driver;

// Register the PostgreSQL driver
DriverManager.registerDriver(new Driver());

并且考虑到在第一个示例中,类名也可能来自属性文件,XML文件等,具体取决于您的应用程序的方便程度。

答案 1 :(得分:2)

JDBC API Tutorial and Reference是此类问题的最佳参考,section of which addresses the role played by the Driver and DriverManager classes

所有驱动程序类都应该有一个静态初始化程序,负责创建该驱动程序的实例,并在加载Driver类时将其注册到DriverManager。

此外,DriverManager.getConnection()可能是该类中唯一的用户空间友好方法。大多数使用JDBC API的开发人员通常不使用大多数其他方法。所以古老的格言仍然存在 - 使用Class.forName()加载驱动程序,然后使用DriverManager.getConnection()来获取与数据库的连接。

答案 2 :(得分:1)

阅读JavaDoc看起来像Class.forName需要开始,然后事情发生了变化,以至于它不再是首选的方式(或所需的方式)。

答案 3 :(得分:1)

我不得不说,如果通过静态引用驱动程序来构造驱动程序实例,那么您的生活会更容易。一旦你有了,你就可以忽略那些由邪恶构成的DriverManager

答案 4 :(得分:1)

“表演等更好吗?”

我想说这次一次性操作的表现是你最不担心的。

如果您使用的是Java EE应用服务器,答案是“不”。您应该设置一个连接池,让它处理加载驱动程序并分发连接。