Class.forName("oracle.jdbc.driver.OracleDriver");
DriverManager.getConnection("url", "userName", "password");api 上说,DriverManager会根据已经load的driver 来找一个适当的作为driver,由此得到connection,小弟想问一下,DriverManager 是如何得知有多少driver load 的???
DriverManager.getConnection("url", "userName", "password");api 上说,DriverManager会根据已经load的driver 来找一个适当的作为driver,由此得到connection,小弟想问一下,DriverManager 是如何得知有多少driver load 的???
程序还可以在任意时间显式地加载 JDBC 驱动程序。例如,my.sql.Driver 是使用以下语句加载的:
Class.forName("my.sql.Driver");
在调用 getConnection 方法时,DriverManager 会试着从初始化时加载的那些驱动程序以及使用与当前 applet 或应用程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序。
Bridge模式中,Abstraction(DriverManager)是要拥有一个Implementor(Driver)的引用的,但是我们在使用过程中,并没有将Driver对象注册到DriverManager中去啊,这是怎么回事呢?jdk文档对Driver的描述中有这么一句:
When a Driver class is loaded, it should create an instance of itself and register it with the DriverManager
是oracle.jdbc.driver.OracleDriver在装载完后自动帮我们完成了这一步骤。