Need of Class.forName() to load a driver
All JDBC Drivers have a static block that registers itself with DriverManager and DriverManager has static an initializer only.
The MySQL JDBC Driver has a static initializer looks like this:
JVM executes the static block and the Driver registers itself with the DriverManager.
We need a database connection to manipulate the database and create the connection to the database, the DriverManager class has to know which database driver you want to use (static initialized).