Im Augenblick verstehe ich Deine Aussagen nicht wirklich....
ich möchte mal ein größeres Projekt erstellen, und das mit Maven
Das ist ja erst einmal kein Problem... Die Frage ist da aber, was soll das für ein Projekt sein?
Dazu brauche ich bekanntlich ein REST zur Verbindung zur Datenbank.
Das macht erst einmal keinen Sinn. Du kannst einen REST WebService schreiben, mit dem Du Entities verwalten kannst, die in einer Datenbank gespeichert sind ... So gesehen kannst Du sozusagen mit einem REST Webservice eine Datenbank kapseln (wenn man es so ausdrücken will). Aber das brauchst Du in keiner Weise.
Eigentlich wollte ich mit der GUI anfangen und dann mit der Verbindung zur Datenbank enden.
Da weiss ich nicht, in wie weit das Sinn macht. Klar, man frühzeitig mit der Oberfläche beginnen - das ist dann der Bereich, der oft unter dem Stichwort UX/UI fällt. Das ist aber dann mehr der Design-Aspekt und da geht es dann oft um die Erstellung von Bildern oder UI Prototypen. Damit kann man Kunden frühzeitig einbinden, wie das Produkt aussehen wird, wie die Bedienung sein wird und so.
Das ist aber dann nicht der wirklich gradlinige Entwicklungsweg. Die Entwicklung läuft dann dennoch sozusagen "Bottom up" und die Ergebnisse vom UX/UI Spezialisten fließen dann in die eigentliche Entwicklung ein. So kenne ich das zumindest von Projekten.
In der Regel fängt man bei den meisten Projekten mit dem Kernmodel an. Das heisst Du machst die Entities. Bei Code first wird die Datenbank in der Regel direkt mit erstellt sprich: Das ist dann sowas wie ein automatisches Nebenprodukt.
Auf den Datenklassen baut man dann die Businesslogik / Controller.
Jetzt meine Frage, kann man die Rest API später noch hinzufügen oder wäre von Anfang an das Erstellen einer REST mittels spring boot erforderlich?
Du kannst da benötigte APIs immer hinzu fügen. Aber Dir sollte bewusst sein, dass eine API etwas sehr statisches und in der Regel unverändertes ist. Du solltest da also sehr genau wissen, was Du brauchst / willst.
(Und wenn Du Änderungen hast, dann hast Du das oft als neue API. Das heisst Du hast dann eine API v1 und dann kommt eine v2. Die haben dann auch in der Regel entsprechende Endpunkte und so ...
Es macht also tatsächlich Sinn, so eine API gut zu planen und zu dokumentieren. Dazu dient dann z.B. Swagger / Open API. Das kannst Du separat machen z.B. in einem Editor oder Du kannst so Dinge auch im Code integrieren. Dann würde die Dokumentation parallel erzeugt.
Braucht man da eigentlich spring boot oder kann man das auch selbst implementieren?
Natürlich kannst Du alles selbst implementieren. Das ist ja auch alles, was jemand anderes erst entwickelt hat. Nur eben ist das sehr viel Aufwand - Du kannst Dir ja einfach einmal anschauen, wie Umfangreich Projekte wie Spring Boot, Quarkus, Jakarta EE, ... sind.... Aber alles wurde entwickelt, setzt massiv auf andere Libraries und das kann man nachbauen.
Aber auf Grund des Aufwandes macht es tatsächlich Sinn, bestehende Dinge zu nutzen. Spring Boot bietet sehr viel.
Wenn Du die Entieties gebaut hast (mit ein paar Anotations), dann hast du die Datenbankzugriffe geschenkt. Sowohl mit Erzeugung / Aktualisierung der Datenbank als auch die Erstellung der Repositories für den Zugriff.
Wenn Du eine REST API für die Entities für CRUD Operationen haben willst: Kannst Du über ein Spring Boot Modul einbinden und konfigurieren...
Swagger Dokumentation der API (So du die in Annotations mit gesetzt hast): Wird erstellt und mit angeboten ....
Also ja: Es macht Sinn für ein Projekt, fertige Lösungen zu nutzen.