Java / Spring: So generieren Sie mit Speedment eine CRUD REST-API vollstÀndig

In diesem Artikel erfahren Sie, wie Sie mit Speedment eine vollstĂ€ndige CRUD REST-API fĂŒr eine Datenbank erstellen.



Es wird von Jahr zu Jahr deutlicher, dass das Spring Framework eines der am hĂ€ufigsten verwendeten Java-Frameworks fĂŒr die Webentwicklung ist.

WĂ€hrend sich das nĂ€chste Jahrzehnt nĂ€hert, hat das populĂ€rste Modul von Spring, Spring Boot, gerade ein umfangreiches Update erhalten. Die neuen Versionen von Spring Boot "2.2.0" und 2020 sind nahezu perfekt aufeinander abgestimmt. Aus diesem Grund hat das Speedment-Entwicklungsteam die LĂŒcke geschlossen, indem es das Spring Boot-Plugin aktualisiert hat.

Wenn Sie zum ersten Mal von Speedment hören, werden Sie begeistert sein, wenn wir Ihnen zeigen, wie Entwickler mit dem Spring Boot Speedment-Plugin mĂŒhelos Spring-Datenbankanwendungen mit Speedment, ORM und einer leistungsstarken Stream API-basierten AbfrageoberflĂ€che erstellen können.

Über Speedment


Speedment kann als das ORM bezeichnet werden, das die Java-Community verdient - ein Toolkit fĂŒr diejenigen, die eine schnelle Entwicklung und noch schnellere Anwendungen lieben.

Durch die Verwendung der Java Stream-API als primĂ€res Kommunikationsmittel mit der ausgewĂ€hlten Datenbank können Entwickler mit Java-Erfahrung sich bei Speedment wie zu Hause fĂŒhlen. Neben der benutzerfreundlichen API bietet Speedment Entwicklern ein grafisches Tool, mit dem sie in Sekundenschnelle ein Domain-Modell erstellen können.

Wenn Sie sich fĂŒr Speedment als Ganzes interessieren, klicken Sie auf den folgenden Link, um eine detaillierte Dokumentation mit Beispielen zu erhalten . Der Rest dieses Artikels befasst sich mit dem Spring Boot Plugin.

Spring Boot: Schnellster Start


Das Speedment Spring Boot-Plugin gibt es schon seit einiger Zeit, aber Speedment 3.2.2 hat die Hauptfunktion eingefĂŒhrt - die FĂ€higkeit, die gesamte CRUD REST-API direkt aus Ihrem Datenbankmodell zu generieren.

AbhÀngig davon, ob Sie von vorne beginnen oder bereits ein Projekt haben, sind die Schritte unterschiedlich. Stellen Sie jedoch sicher, dass der Integrationsprozess unabhÀngig vom Status Ihres Projekts einfach ist.

Wenn Sie Spring Boot in ein vorhandenes Speedment-Projekt integrieren möchten, mĂŒssen Sie Ihrer pom.xml die folgenden 2 Elemente hinzufĂŒgen:

<plugin> <groupId>com.speedment.enterprise</groupId> <artifactId>speedment-enterprise-maven-plugin</artifactId> <version>${speedment.version}</version> <configuration> <components> component>com.speedment.enterprise.plugins.spring.SpringGeneratorBundle</component> </components> <appName>${project.artifactId}</appName> <packageName>${project.groupId}</packageName> </configuration> ... // Database connector dependency </plugin> <dependencies> ... <dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.1.RELEASE</version> </dependency> <dependency> <groupId>com.speedment.enterprise.plugins</groupId> <artifactId>spring-runtime</artifactId> <version>${speedment.version}</version> </dependency> ... </dependencies> 

Nach dem HinzufĂŒgen dieser Elemente bei der nĂ€chsten Regeneration Ihres Domain-Modells sollte eine springspezifische Konfiguration generiert werden. Die generierte Konfiguration steuert die Datenbankverbindung und die Bin-Registrierungseigenschaften fĂŒr die verschiedenen von Speedment generierten Manager.

Wenn Sie das Projekt von Grund auf neu starten, rufen Sie den Projektinitialisierer auf , in dem ein vorgefertigtes Projekt fĂŒr Spring Boot fĂŒr Sie erstellt wird. Wie Sie das Projekt konfigurieren, bleibt Ihnen ĂŒberlassen. Wenn Sie jedoch das Spring Boot-Plugin in das generierte Projekt einbeziehen möchten, stellen Sie sicher, dass das KontrollkĂ€stchen neben Spring im Abschnitt Plugins aktiviert ist. Wenn die Projektkonfiguration Ihren Vorstellungen entspricht, klicken Sie auf die SchaltflĂ€che Herunterladen , und Sie erhalten ein Projektarchiv, das zur Verwendung bereitsteht.



CRUD vereinfacht


Sobald Sie das Plugin installiert haben, stehen im Speedment-Tool einige spezifische Spring Boot-Optionen zur VerfĂŒgung, mit denen Sie Ihre REST-API konfigurieren können. Sie können das Tool Speedment ausfĂŒhren, indem Sie den folgenden Befehl ausfĂŒhren:

 mvn speedment:tool 

Wenn Sie Speedment zum ersten Mal verwenden, sollten Sie sich anhand des kurzen Tutorials zu Hello Speedment mit dem Workflow vertraut machen .

StandardmĂ€ĂŸig generiert das Speedment-Tool keine REST-API. Um eine CRUD-REST-API fĂŒr eine bestimmte Tabelle zu generieren, wĂ€hlen Sie die Tabelle in der Baumansicht aus und aktivieren Sie das KontrollkĂ€stchen " Generate @RestController " ( @RestController generieren) zusammen mit der Option " REST Enable Create / Update / Delete " ( REST aktivieren, erstellen / aktualisieren / löschen ). Wenn Sie auf Generieren klicken, wird eine Reihe von REST-Zuordnungen erstellt - URLs, die CRUD-Operationen fĂŒr eine bestimmte Tabelle implementieren.



Das ist alles! Eine manuelle Kodierung ist nicht erforderlich. FĂŒhren Sie einfach das generierte Spring-Projekt aus, indem Sie den folgenden Befehl ausfĂŒhren:

 mvn spring-boot:run 

EntitÀten mit REST erstellen


Um eine neue EntitĂ€t mit der von Ihnen erstellten REST-API zu erstellen, mĂŒssen Sie eine POST-Anforderung unter dem im Tool angegebenen Pfad ausfĂŒhren. StandardmĂ€ĂŸig stimmt der Name dieses Pfads mit dem Namen Ihrer Tabelle und dem PrĂ€fix Ihres Schemanamens ĂŒberein. Wenn Sie das KontrollkĂ€stchen " REST-Endpunkt " deaktivieren, können Sie einen beliebigen Pfadnamen angeben. Der Anforderungshauptteil muss SchlĂŒssel-Wert-Paare im JSON-Objekt enthalten, wobei die " REST Field Name " -Werte aus dem Speedment-Tool SchlĂŒssel sind.

Wenn wir beispielsweise eine Tabelle mit dem Namen person mit den Spalten id , name und age haben , senden wir die folgende Abfrage, um eine neue EntitÀtsperson zu erstellen:

 POST localhost:8080/db/person { "id": 1, "name": "Jane", "age": 25 } 

oder

 curl -d '{"id": 1,"name": "Jane","age": 25}' -H "Content-Type:application/json" -X POST localhost:8080/db/person 

Wenn der Wert der ID- Spalte automatisch generiert wird (oder eine Sequenz verwendet), können Sie ihn aus dem POST-Body ausschließen. Wenn Sie eine bestimmte Spalte zwangsweise aus dem POST-Body ausschließen möchten, klicken Sie in der Tool-Strukturansicht auf die entsprechende Spalte, deaktivieren Sie das KontrollkĂ€stchen " In Body einbeziehen" und erstellen Sie Ihr Domain-Modell neu. Wenn Sie andererseits sicherstellen möchten, dass beim AusfĂŒhren der Anforderung eine bestimmte Spalte im POST-Hauptteil vorhanden ist, aktivieren Sie „Erforderlich in Hauptteil erstellen“ und erstellen Sie Ihr DomĂ€nenmodell neu.



EntitÀten mit REST abrufen


Um unsere neu erstellte EntitĂ€t zu erhalten, mĂŒssen wir eine GET-Anforderung auf die gleiche Weise ausfĂŒhren, die zum Erstellen der EntitĂ€t verwendet wurde:

 GET localhost:8080/db/person 

oder

 curl localhost:8080/db/person/1 

Eine abgeschlossene Anforderung gibt ein JSON-Array aller vorhandenen EntitĂ€ten zurĂŒck. In unserem Fall wĂŒrde es ein Array nur mit unserer einzigen EntitĂ€t zurĂŒckgeben:

 [ { "id": 1, "name": "Jane", "age": 25 } ] 

Erweiterte Konzepte wie Filter und Sortierer werden in der offiziellen Dokumentation von Speedment beschrieben.

Aktualisieren vorhandener EntitÀten mithilfe von REST


Das Aktualisieren einer vorhandenen EntitĂ€t mithilfe der REST-API Ă€hnelt dem Erstellen einer EntitĂ€t. Anstelle einer POST-Anforderung fĂŒhren wir eine PATCH-Anforderung aus, und der Pfad wird mit einer EntitĂ€tskennung erweitert. Welche ID unserer EntitĂ€t von der PrimĂ€rschlĂŒsselspalte dieser Tabelle abhĂ€ngt. Da unsere PK-Spalte (PrimĂ€rschlĂŒssel) ein numerischer Typ ist, ist unsere EntitĂ€tskennung eine Ganzzahl.

Um die EntitĂ€t zu aktualisieren, die wir in unserem vorherigen Beispiel erstellt haben, fĂŒhren wir die folgende Abfrage aus:

 PATCH localhost:8080/db/person/1 { "name": "Mike", "age": 43 } 

oder
 curl -d '{"name": "Jane","age": 25}' -H "Content-Type:application/json" -X PATCH localhost:8080/db/person/1 

StandardmĂ€ĂŸig sind alle Spalten im PATCH-Hauptteil enthalten (mit Ausnahme der PrimĂ€rschlĂŒsselspalte), sie sind jedoch nicht erforderlich. Wenn Sie eine bestimmte Spalte zwangsweise aus dem Anforderungshauptteil ausschließen möchten, klicken Sie in der Werkzeugstrukturansicht auf die entsprechende Spalte, deaktivieren Sie das KontrollkĂ€stchen " In Aktualisierungshauptteil einbeziehen" und erstellen Sie Ihr DomĂ€nenmodell neu. Wenn Sie andererseits sicherstellen möchten, dass eine Spalte im Anforderungshauptteil vorhanden ist, aktivieren Sie " Erforderlich im Aktualisierungshauptteil " und aktualisieren Sie Ihr DomĂ€nenmodell.

EntitÀten mit REST entfernen


Das Entfernen einer EntitĂ€t mithilfe der REST-API ist recht einfach. Wir fĂŒhren eine DELETE-Anforderung auf die gleiche Weise aus, die zum Aktualisieren von EntitĂ€ten verwendet wird.

Um die EntitĂ€t zu entfernen, die wir in den vorherigen Beispielen erstellt und aktualisiert haben, fĂŒhren Sie die folgende Abfrage aus:

 DELETE localhost:8080/db/person/1 

oder

 curl -X DELETE localhost:8080/db/person/1 

Zusammenfassung


Das Starten neuer Projekte kann manchmal schwierig sein. Als Entwickler möchten wir diese Unannehmlichkeiten so weit wie möglich vermeiden und direkt in die Programmierung eintauchen. Mit dem neuen Speed ​​Boot Spring Boot-Plugin können Entwickler den Start neuer Projekte beschleunigen, indem sie automatisch alle erforderlichen Konfigurationen und REST-Controller direkt aus der Datenbank generieren.

Wir hoffen, Ihnen hat dieser kurze Leitfaden zu den neuen CRUD-Funktionen gefallen, die das Speedment Spring Boot-Plugin bietet. Wenn Sie an einer detaillierteren ErlĂ€uterung der neuen Funktionen interessiert sind, lesen Sie die offizielle Dokumentation , in der Sie detaillierte ErklĂ€rungen und Beispiele fĂŒr neue CRUD-Funktionen finden.

ZusĂ€tzliche LektĂŒre


Erstellen einer REST-API Teil 4: Behandeln von POST-, PUT- und DELETE-Anforderungen

Erstellen einer grundlegenden CRUD RESTful Spring-Boot-MVC-Anwendung: Erste Schritte mit Java Spring

Source: https://habr.com/ru/post/de483026/


All Articles