Java / Spring: comment générer complÚtement une API CRUD REST à l'aide de Speedment

Dans cet article, vous apprendrez à utiliser Speedment pour créer une API CRUD REST complÚte pour une base de données.



Il devient de plus en plus évident chaque année que Spring Framework est l'un des frameworks de développement Web Java les plus utilisés.

À l'approche de la prochaine dĂ©cennie, le module le plus populaire de Spring, Spring Boot, vient de recevoir une mise Ă  jour majeure. Les nouvelles versions de Spring Boot "2.2.0" et 2020 sont presque parfaitement adaptĂ©es les unes aux autres. Par consĂ©quent, l'Ă©quipe de dĂ©veloppement de Speedment a comblĂ© cette lacune en mettant Ă  jour le plugin Spring Boot.

Si c'est la premiĂšre fois que vous entendez parler de Speedment, vous l'apprĂ©cierez car nous montrons comment le plugin Spring Boot Speedment permet aux dĂ©veloppeurs de crĂ©er sans effort des applications de base de donnĂ©es Spring Ă  l'aide de Speedment, ORM avec une puissante interface de requĂȘte basĂ©e sur l'API Stream.

À propos de Speedment


Speedment peut ĂȘtre dĂ©crit comme l'ORM que la communautĂ© Java mĂ©rite - une boĂźte Ă  outils pour ceux qui aiment le dĂ©veloppement rapide et les applications encore plus rapides.

En utilisant l'API Java Stream comme principal moyen de communication avec la base de données sélectionnée, Speedment permet aux développeurs ayant une expérience Java de se sentir chez eux. En plus de l'API facile à utiliser, Speedment fournit aux développeurs un outil graphique qui génÚre un modÚle de domaine pour eux en quelques secondes.

Si vous ĂȘtes intĂ©ressĂ© par Speedment dans son ensemble, cliquez sur le lien suivant pour une documentation dĂ©taillĂ©e avec des exemples . Le reste de cet article se concentrera sur le plugin Spring Boot.

Spring Boot: DĂ©marrage le plus rapide


Le plugin Speedment Spring Boot existe depuis un certain temps, mais Speedment 3.2.2 a introduit la fonction principale - la possibilité de générer l'intégralité de l'API CRUD REST directement à partir de votre modÚle de base de données.

Selon que vous partez de zéro ou que vous avez déjà un projet, les étapes seront différentes, mais assurez-vous que le processus d'intégration sera simple quel que soit l'état de votre projet.

Si vous souhaitez intégrer Spring Boot dans un projet Speedment existant, vous devez ajouter les 2 éléments suivants à votre pom.xml :

<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> 

AprĂšs avoir ajoutĂ© ces Ă©lĂ©ments lors de la prochaine rĂ©gĂ©nĂ©ration de votre modĂšle de domaine, une configuration spĂ©cifique Ă  Spring doit ĂȘtre gĂ©nĂ©rĂ©e. La configuration gĂ©nĂ©rĂ©e contrĂŽle les propriĂ©tĂ©s de connexion Ă  la base de donnĂ©es et d'enregistrement de bac pour les diffĂ©rents gestionnaires gĂ©nĂ©rĂ©s par Speedment.

Si vous dĂ©marrez le projet Ă  partir de zĂ©ro, accĂ©dez Ă  l' initialiseur de projet , oĂč un projet prĂȘt Ă  l'emploi pour Spring Boot sera crĂ©Ă© pour vous. La façon dont vous allez configurer le projet dĂ©pend de vous, mais pour inclure le plugin Spring Boot dans le projet gĂ©nĂ©rĂ©, assurez-vous que la case Ă  cĂŽtĂ© de Spring est cochĂ©e dans la section plugins. Lorsque la configuration du projet vous convient, cliquez sur le bouton TĂ©lĂ©charger et vous recevrez une archive de projet prĂȘte Ă  l'emploi.



CRUD simplifié


Une fois le plugin installé, certaines options spécifiques de Spring Boot seront disponibles dans l'outil Speedment que vous pouvez utiliser pour configurer votre API REST. Vous pouvez exécuter l'outil Speedment en exécutant la commande suivante:

 mvn speedment:tool 

Si c'est la premiĂšre fois que vous utilisez Speedment, vous souhaiterez peut-ĂȘtre vous familiariser avec le flux de travail en suivant le bref didacticiel Hello Speedment .

Par défaut, l'outil Speedment ne génÚre pas d'API REST. Pour générer une API CRUD REST pour une table spécifique, sélectionnez la table dans l'arborescence et cochez la case « Generate @RestController » ainsi que l'option « REST Enable Create / Update / Delete ». Lorsque vous cliquez sur Générer , un ensemble de mappages REST sera créé - des URL qui implémentent des opérations CRUD pour une table spécifique.



C'est tout! Le codage manuel n'est pas requis. Exécutez simplement le projet Spring généré en exécutant la commande:

 mvn spring-boot:run 

Création d'entités à l'aide de REST


Pour crĂ©er une nouvelle entitĂ© Ă  l'aide de l'API REST que vous avez crĂ©Ă©e, vous devez exĂ©cuter une demande POST sur le chemin spĂ©cifiĂ© dans l'outil. Par dĂ©faut, le nom de ce chemin correspond au nom de votre table, avec le prĂ©fixe du nom de votre schĂ©ma. Si vous dĂ©cochez la case « REST Endpoint », vous pouvez spĂ©cifier un nom de chemin arbitraire. Le corps de la demande doit contenir des paires clĂ©-valeur dans l'objet JSON, oĂč les valeurs " REST Field Name " de l'outil Speedment sont des clĂ©s.

Par exemple, si nous avons une table nommĂ©e personne avec les colonnes id , nom et Ăąge , nous enverrons la requĂȘte suivante pour crĂ©er une nouvelle personne entitĂ©:

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

ou

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

Si la valeur de la colonne id est générée automatiquement (ou utilise une séquence), vous pouvez l'exclure du corps POST. Si vous souhaitez exclure de force une colonne spécifique du corps POST, cliquez sur la colonne correspondante dans l'arborescence des outils et décochez la case « Inclure dans la création de corps » et recréez votre modÚle de domaine. D'un autre cÎté, si vous voulez vous assurer qu'une colonne spécifique existe dans le corps POST lors de l'exécution de la demande, cochez «Requis dans Créer un corps» et recréez votre modÚle de domaine.



Récupération d'entités à l'aide de REST


Pour obtenir notre entitĂ© nouvellement crĂ©Ă©e, nous devons exĂ©cuter une demande GET de la mĂȘme maniĂšre que celle utilisĂ©e pour crĂ©er l'entitĂ©:

 GET localhost:8080/db/person 

ou

 curl localhost:8080/db/person/1 

Une demande terminée renverra un tableau JSON de toutes les entités existantes. Dans notre cas, il retournerait un tableau uniquement avec notre seule entité:

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

Les concepts avancés tels que les filtres et les trieurs sont détaillés dans la documentation officielle de Speedment.

Mise à jour des entités existantes à l'aide de REST


La mise à jour d'une entité existante à l'aide de l'API REST est similaire à la création d'une entité. Au lieu d'une demande POST, nous exécutons une demande PATCH et le chemin est développé avec un identifiant d'entité. L'identifiant de notre entité dépend de la colonne de clé primaire de cette table. Puisque notre colonne PK (clé primaire) est de type numérique, notre identifiant d'entité sera un entier.

Pour mettre Ă  jour l'entitĂ© que nous avons crĂ©Ă©e dans notre exemple prĂ©cĂ©dent, nous exĂ©cuterons la requĂȘte suivante:

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

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

Par défaut, toutes les colonnes sont incluses dans le corps PATCH (à l'exception de la colonne de clé primaire), mais elles ne sont pas obligatoires. Si vous souhaitez exclure de force une colonne spécifique du corps de la demande, cliquez sur la colonne correspondante dans l'arborescence des outils et décochez la case « Inclure dans le corps de la mise à jour » et recréez votre modÚle de domaine. D'un autre cÎté, si vous voulez vous assurer qu'une colonne existe dans le corps de la demande, cochez « Requis dans le corps de mise à jour » et mettez à jour votre modÚle de domaine.

Suppression d'entités à l'aide de REST


La suppression d'une entitĂ© Ă  l'aide de l'API REST est assez simple - nous exĂ©cutons une demande DELETE de la mĂȘme maniĂšre que celle utilisĂ©e pour mettre Ă  jour les entitĂ©s.

Pour supprimer l'entitĂ© que nous avons crĂ©Ă©e et mise Ă  jour dans les exemples prĂ©cĂ©dents, nous exĂ©cuterions la requĂȘte suivante:

 DELETE localhost:8080/db/person/1 

ou

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

Résumé


Le lancement de nouveaux projets peut parfois ĂȘtre gĂȘnant. En tant que dĂ©veloppeurs, nous voulons Ă©viter autant que possible ces inconvĂ©nients et plonger directement dans le codage. Avec le nouveau plugin Speed ​​Boot Spring Boot, les dĂ©veloppeurs peuvent accĂ©lĂ©rer le lancement de nouveaux projets en gĂ©nĂ©rant automatiquement toutes les configurations nĂ©cessaires et les contrĂŽleurs REST directement Ă  partir de la base de donnĂ©es.

Nous espĂ©rons que vous avez apprĂ©ciĂ© ce petit guide des nouvelles fonctionnalitĂ©s CRUD fournies par le plugin Speedment Spring Boot. Si vous ĂȘtes intĂ©ressĂ© par une explication plus dĂ©taillĂ©e des nouvelles fonctions, rendez-vous dans la documentation officielle , oĂč vous trouverez des explications dĂ©taillĂ©es et des exemples de nouvelles fonctions CRUD.

Lecture complémentaire


Création d'une API REST Partie 4: Gestion des demandes POST, PUT et DELETE

Création d'une application MVC CRUD RESTful Spring Boot de base: Prise en main de Java Spring

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


All Articles