1.sun公司制定接口标准:Connection接口和DriverManager类(Connection接口提供操作数据库的抽象方法,待数据库厂商实现;DriverManager类提供给数据库厂商注册连接和获取连接的方法)
2.数据库厂商实现Connection接口中的方法(用来定义具体的数据库操作)
3.数据库厂商自定义驱动文件Driver类,将2中的连接注册到SUN提供的DriverManager中(此过程在静态代码块中,确保类被加载时即可执行)
4.程序员通过Class.for("");加载驱动文件,并获取连接,进而对数据库进行操作
SUN公司:
首先,SUN公司定义了一个接口类:
public interface Connection {
public void f1();
}
同时,SUN公司定义了一个驱动管理类:
public class DriverManager {
public static Connection conn = null;
/**
* 注册连接
*
* @param connection
*/
public static void registConnection(Connection connection) {
conn = connection;
}
/**
* 获取连接
*
* @return
*/
public static Connection getConnection() {
return conn;
}
}
数据库厂商:(如Oracle、MySQL等)
各数据库厂商实现SUN制定的接口标准,如:
Oracle
/**
* @Description:Oracle数据库厂商实现的接口类
*
* @author:Oracle
*/
public class ConnectionOracleImpl implements Connection {
@Override
public void f1() {
// 这里实现Oracle操作数据库的具体方法,封装在.jar文件中,供程序员调用
System.out.println("Oracle的f1()方法实现");
}
}
或者MySQL
/**
* @Description:MySQL数据库厂商实现的接口类
*
* @author:MySQL
*/
public class ConnectionMySQLImpl implements Connection {
@Override
public void f1() {
//这里实现MySQL操作数据库的具体方法,封装在.jar文件中,供程序员调用
System.out.println("MySQL的f1()方法实现");
}
}
同时,数据库厂商定制自己的驱动类,并通过静态代码块,确保该驱动类被加载时,SUN的驱动管理类可以注册厂商的数据库连接,如:
Oracle
/**
* @Description:Oracle厂商制定的驱动类
*
* @author:Oracle
*/
public class OracleDriver {
static {
DriverManager.registConnection(new ConnectionOracleImpl());
}
}
MySQL
/**
* @Description:MySQL厂商制定的驱动类
*
* @author:MySQL
*/
public class MySQLDriver {
static {
DriverManager.registConnection(new ConnectionMySQLImpl());
}
}
开发者:
开发人员引入某个数据库厂商的驱动文件,即可调用内部方法操作数据库,如:
/**
* @Description:开发人员
*
* @author:me
*/
public class Test2 {
public static void main(String[] args) throws Exception {
Class.forName("test.OracleDriver");// 虚拟机根据类名找到字节码文件
Connection con = DriverManager.getConnection();
con.f1();
Class.forName("test.MySQLDriver");// 虚拟机根据类名找到字节码文件
Connection con2 = DriverManager.getConnection();
con2.f1();
}
}
网友评论