Class.forName() is not directly related to JDBC at all. It simply loads a class.
Most JDBC Driver classes register themselves in their static initializers by calling registerDriver().
registerDriver() is the real call that you hardly ever need to call yourself (unless you write your own JDBC driver).
Note that in JDBC 4 you should not need either of those if your JDBC driver is up-to-date, as drivers can be found using the service location mechanisms instead (i.e. simply leave out that call and open your connection as usual). See the documentaton of DriverManager for details:
The DriverManager methods
getConnectionandgetDrivershave been enhanced to support the Java Standard Edition Service Provider mechanism. JDBC 4.0 Drivers must include the fileMETA-INF/services/java.sql.Driver. This file contains the name of the JDBC drivers implementation ofjava.sql.Driver. For example, to load themy.sql.Driverclass, theMETA-INF/services/java.sql.Driverfile would contain the entry:my.sql.DriverApplications no longer need to explictly load JDBC drivers using
Class.forName(). Existing programs which currently load JDBC drivers usingClass.forName()will continue to work without modification.