不知大家有没有注意过一个细节,在 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。

留下一个答复

Please enter your comment!
Please enter your name here