I suggest you to use Connection Pool
where connections are already created and stored in the pool instead of creating at run-time.
In software engineering, a connection pool is a cache of database connections maintained so that the connections can be reused when future requests to the database are required.
Connection pools are used to enhance the performance
of executing commands on a database.
I have already shared a nice ConnectionUtil class to manage all the connections in a single class for whole application.
Use JNDI
to bind the data-source with the application rather than hard-coding username/password and configuration in the java class itself.
It's better explained under Java Tutorial on Connecting with DataSource Objects
DataSource
objects can provide connection pooling and distributed transactions. This functionality is essential for enterprise database computing.
There is one more post on StackOverflow Why do we use a DataSource instead of a DriverManager? that explain it as well.
Move the driver class loading step in the Static Initialization Block
static{
Class.forName("com.mysql.jdbc.Driver");
}