Proper manera de comenzar la aplicación de escritorio Java Swing

What es la forma correcta para iniciar la aplicación que necesita 5-10 segundos para recuperar los datos iniciales de la base de datos? Esto es lo que obtuve hasta ahora, pero no estoy seguro de que no haya mejores formas. Me gustaría que la GUI y el acceso a la base de datos estuvieran en diferentes subprocesos para que la construcción de la GUI se produjera simultáneamente con la recuperación de datos.

public static void main(String[] args) {
    final Controller controller = new Controller();
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            View frame = new View();
            controller.setView(frame);
        }
    });
    Model model = new Model();
    controller.setModel(model);
    controller.getInitialData();
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta