是使用Bridge模式进行设计的,DriverManager就是其中的Abstraction,Java.sql.Driver是Implementor,com.mysql.jdbc.Driver是Implementor的一个具体实现(请参考GOF的Bridge模式的描述)。大家注意了,前一个Driver是一个接口,后者却是一个类,它实现了前面的Driver接口。
一 DriverManager.registerDriver(new com.mysql.jdbc.Driver());
二 System.setProperty("jdbc.drivers", "Oracle.jdbc.driver.OracleDriver:com.mysql.jdbc.Driver");
System指的是JRE (runtime)system,,不是指OS。
多个驱动用:号分隔,在连结时JDBC会按顺序搜索,直到找到第一个能成功连结指定的URL的驱动程序.
三 Class.forName("com.mysql.jdbc.Driver");
Class.forName(Driver driver)是返回一个类
作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段
好处在于你不用编译/运行时依赖于特定的 JDBC Driver 库, 也就减少了项目代码的依赖性. 而且也很容易改造成从配置文件读取JDBC配置, 从而可以在运行时动态更换JDBC/DB.