En este artículo, aprenderá a usar Speedment para crear una API CRUD REST completa para una base de datos.

Cada año es cada vez más evidente que Spring Framework es uno de los marcos de desarrollo web Java más utilizados.
A medida que se acerca la próxima década, el módulo más popular de Spring, Spring Boot, acaba de recibir una actualización importante. La nueva versión de Spring Boot "2.2.0" y 2020 se combinan casi perfectamente entre sí. Por lo tanto, el equipo de desarrollo de Speedment llenó el vacío actualizando el complemento Spring Boot.
Si es la primera vez que escucha sobre Speedment, lo disfrutará mientras le mostramos cómo el complemento Spring Boot Speedment permite a los desarrolladores crear sin esfuerzo aplicaciones de bases de datos Spring utilizando Speedment, ORM con una potente interfaz de consulta basada en Stream API.
Sobre Speedment
Speedment puede describirse como el ORM que la comunidad Java merece: un juego de herramientas para aquellos que aman el desarrollo rápido y las aplicaciones aún más rápidas.
Al utilizar la API Java Stream como el medio principal para comunicarse con la base de datos seleccionada, Speedment permite a los desarrolladores con experiencia en Java sentirse como en casa. Además de la API fácil de usar, Speedment proporciona a los desarrolladores una herramienta gráfica que genera un modelo de dominio para ellos en segundos.
Si está interesado en Speedment en su conjunto, haga clic en el siguiente enlace para
obtener documentación detallada con ejemplos . El resto de este artículo se centrará en el complemento Spring Boot.
Spring Boot: inicio más rápido
El complemento Speedment Spring Boot ha existido por algún tiempo, pero Speedment 3.2.2 introdujo la función principal: la capacidad de generar toda la API CRUD REST directamente desde su modelo de base de datos.
Dependiendo de si comienza desde cero o si ya tiene un proyecto, los pasos serán diferentes, pero asegúrese de que el proceso de integración sea simple independientemente del estado de su proyecto.
Si desea integrar Spring Boot en un proyecto Speedment existente, debe agregar los siguientes 2 elementos a su
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>
Después de agregar estos elementos en la próxima regeneración de su modelo de dominio, se debe generar una configuración específica de Spring. La configuración generada controla la conexión de la base de datos y las propiedades de registro de bin para los distintos gerentes generados por Speedment.
Si comienza el proyecto desde cero, vaya al
inicializador del
proyecto , donde se creará un proyecto listo para Spring Boot. La forma en que configurará el proyecto depende de usted, pero para incluir el complemento Spring Boot en el proyecto generado, asegúrese de que la casilla de verificación junto a Spring esté marcada en la sección de complementos. Cuando le convenga la configuración del proyecto, haga clic en el botón
Descargar y recibirá un archivo de proyecto listo para usar.

CRUD simplificado
Una vez que instale el complemento, algunas opciones específicas de Spring Boot estarán disponibles en la herramienta Speedment que puede usar para configurar su API REST. Puede ejecutar la herramienta Speedment ejecutando el siguiente comando:
mvn speedment:tool
Si es la primera vez que usa Speedment, puede familiarizarse con el flujo de trabajo siguiendo el breve
tutorial de Hello Speedment .
Por defecto, la herramienta Speedment no genera una API REST. Para generar una API CRUD REST para una tabla específica, seleccione la tabla en la vista de árbol y seleccione la casilla de verificación "
Generar @RestController " junto con la opción "
REST Activar Crear / Actualizar / Eliminar ". Al hacer clic en
Generar , se creará un conjunto de asignaciones REST: URL que implementan operaciones CRUD para una tabla específica.

Eso es todo! No se requiere codificación manual. Simplemente ejecute el proyecto Spring generado ejecutando el comando:
mvn spring-boot:run
Crear entidades usando REST
Para crear una nueva entidad utilizando la API REST que creó, debe ejecutar una solicitud POST en la ruta especificada en la herramienta. Por defecto, el nombre de esta ruta coincide con el nombre de su tabla, con el prefijo del nombre de su esquema. Si desactiva la casilla de verificación "
Punto final REST ", puede especificar un nombre de ruta arbitrario. El cuerpo de la solicitud debe contener pares clave-valor en el objeto JSON, donde los valores de "
Nombre de campo REST " de la herramienta Speedment son claves.
Por ejemplo, si tenemos una tabla llamada
persona con las columnas
id ,
nombre y
edad , enviaremos la siguiente consulta para crear una nueva
persona entidad:
POST localhost:8080/db/person { "id": 1, "name": "Jane", "age": 25 }
o
curl -d '{"id": 1,"name": "Jane","age": 25}' -H "Content-Type:application/json" -X POST localhost:8080/db/person
Si el valor de la columna
id se genera automáticamente (o usa una secuencia), puede excluirlo del cuerpo POST. Si desea excluir por la fuerza una columna específica del cuerpo POST, haga clic en la columna correspondiente en la vista de árbol de herramientas y desactive la casilla "
Incluir en Crear cuerpo " y vuelva a crear su modelo de dominio. Por otro lado, si desea asegurarse de que exista una columna específica en el cuerpo POST al ejecutar la solicitud, marque "Obligatorio en Crear cuerpo" y vuelva a crear su modelo de dominio.

Recuperando entidades usando REST
Para obtener nuestra entidad recién creada, debemos ejecutar una solicitud GET de la misma manera que se utilizó para crear la entidad:
GET localhost:8080/db/person
o
curl localhost:8080/db/person/1
Una solicitud completa devolverá una matriz JSON de todas las entidades existentes. En nuestro caso, devolvería una matriz solo con nuestra única entidad:
[ { "id": 1, "name": "Jane", "age": 25 } ]
Conceptos avanzados como filtros y clasificadores se detallan en la documentación oficial de Speedment.
Actualización de entidades existentes usando REST
Actualizar una entidad existente usando la API REST es similar a crear una entidad. En lugar de una solicitud POST, ejecutamos una solicitud PATCH, y la ruta se expande con un identificador de entidad. El identificador de nuestra entidad depende de la columna de clave principal de esta tabla. Como nuestra columna PK (clave principal) es de tipo numérico, nuestro identificador de entidad será un número entero.
Para actualizar la entidad que creamos en nuestro ejemplo anterior, ejecutaremos la siguiente consulta:
PATCH localhost:8080/db/person/1 { "name": "Mike", "age": 43 }
o
curl -d '{"name": "Jane","age": 25}' -H "Content-Type:application/json" -X PATCH localhost:8080/db/person/1
De forma predeterminada, todas las columnas se incluyen en el cuerpo PATCH (excepto la columna de clave principal), pero no son obligatorias. Si desea excluir por la fuerza una columna específica del cuerpo de la solicitud, haga clic en la columna correspondiente en la vista de árbol de herramientas y desactive la casilla "
Incluir en el cuerpo de la actualización " y vuelva a crear su modelo de dominio. Por otro lado, si desea asegurarse de que exista una columna en el cuerpo de la solicitud, marque "
Obligatorio en Actualizar cuerpo " y actualice su modelo de dominio.
Eliminar entidades usando REST
Eliminar una entidad usando la API REST es bastante simple: ejecutamos una solicitud DELETE de la misma manera que se usa para actualizar entidades.
Para eliminar la entidad que creamos y actualizamos en los ejemplos anteriores, ejecutaremos la siguiente consulta:
DELETE localhost:8080/db/person/1
o
curl -X DELETE localhost:8080/db/person/1
Resumen
Lanzar nuevos proyectos a veces puede ser problemático. Como desarrolladores, queremos evitar estos inconvenientes tanto como sea posible y sumergirnos directamente en la codificación. Con el nuevo plugin Speed Boot Spring Boot, los desarrolladores pueden acelerar el lanzamiento de nuevos proyectos al generar automáticamente todas las configuraciones necesarias y los controladores REST directamente desde la base de datos.
Esperamos que haya disfrutado esta breve guía de las nuevas características CRUD que proporciona el complemento Speedment Spring Boot. Si está interesado en una explicación más detallada de las nuevas funciones, vaya a la
documentación oficial , donde encontrará explicaciones detalladas y ejemplos de nuevas funciones CRUD.
Lectura adicional
Creación de una API REST Parte 4: Manejo de solicitudes POST, PUT y DELETECreación de una aplicación MVC RESTful CRUD RESTful básica: Primeros pasos con Java Spring