Ese código obliga a la clase que representa el controlador MySQL a cargarse e inicializarse. En Java, una clase no se carga a menos que sea necesario que la clase se carga. Dado que el código JDBC generalmente nunca hace referencia directa al controlador, no se cargaría sin Class.forName
(o algunas otras alternativas equivalentes).
Tenga en cuenta que es necesario tanto cargar y inicializar la clase, que son 2 cosas diferentes.
Además, tenga en cuenta que no es necesario llamar a .newInstance()
-- el inicializador estático del controlador ya se registra como un controlador JDBC.
Por último, tenga en cuenta que con la API del cargador de servicios normalmente no es necesario llamar a Class.forName() para cargar el controlador:se puede cargar automáticamente.