Database access concept
I don't like repeated calls like this config.getDatabase().getHost() + &quot;:&quot; + config.getDatabase().getPort() + .... config.GetDatabase() should be called once and stored in a local variable.

You will run into trouble when writing unit tests. Right now you have no way of mocking out the database access which forces you to run against a real MySql database which tends to make unit testing a pain in the backside.
Create an interface for Database against which all your business logic should work and inject it into the classes responsible for creating the database queries. Then during unit testing you can pass in a mock-implementation which simply checks that the methods are preparing the statements correctly without having to run a query against an actual database.