不知大家有没有注意过一个细节,在 Java 中使用 MySQL 驱动的时候,有的使用的是 org.gjt.mm.mysql.Driver,有的用的是 com.mysql.jdbc.Driver,不过有多少程序猿/猿清楚它们的来历?
度娘说有两个版本的故事:
其一,org.gjt.mm.mysql.Driver 是早期的驱动名称,后来就改名为 com.mysql.jdbc.Driver,现在一般都推荐使用 com.mysql.jdbc.Driver。在最新版本的 MySQL JDBC 驱动中,为了保持对老版本的兼容,仍然保留了 org.gjt.mm.mysql.Driver,但是实际上 org.gjt.mm.mysql.Driver 中调用了com.mysql.jdbc.Driver,因此现在这两个驱动没有什么区别。
还有一个版本,org.gjt.mm.mysql.Driver 是当时最好的 MySQL JDBC,但不是 MySQL 公司的,然后 MySQL 将 MM 的 JDBC 驱动收为官方的 JDBC 驱动,所以将驱动的 package 也改了,但还保留了 org.gjt.mm.mysql.Driver 这个路径的引用,也就是你使用新版的 JDBC 驱动时还可以通过这个来引用,你打开下载的新版 JDBC 驱动的 jar 文件可以看到,只有一个文件的目录是 org.gjt.mm.mysql,就是为了兼容而设计的。
好吧,还是自己找答案,反编译去看一下 org.gjt.mm.mysql.Driver 的源代码:
package org.gjt.mm.mysql;
import java.sql.SQLException;
/**
* Here for backwards compatibility with MM.MySQL
*
* @author Mark Matthews
*/
public class Driver extends com.mysql.jdbc.Driver {
// ~ Constructors
// -----------------------------------------------------------
/**
* Creates a new instance of Driver
*
* @throws SQLException
* if a database error occurs.
*/
public Driver() throws SQLException {
super();
}
}
注释里面写着的么,Here for backwards compatibility with MM.MySQL。无论你使用的是 org.gjt.mm.mysql.Driver 还是 com.mysql.jdbc.Driver,实际上调用的都是 com.mysql.jdbc.Driver,org.gjt.mm.mysql.Driver 是老式写法。所以无论 org.gjt.mm.mysql.Driver 这个起源是咋样一故事,推荐使用 com.mysql.jdbc.Driver。