Un artículo de una serie sobre la creación de un proyecto Java (los enlaces a otros materiales se encuentran al final). Su objetivo es analizar tecnologías clave y el resultado es escribir un bot de Telegram. En esta parte, intentamos iniciar SpringBoot y Flyway. La cantidad mínima de teoría, como quieras))) Omitimos la comparación final de Flyway/Liquibase por un período de tiempo indefinido y vamos al grano. Y aun así ya se ha prolongado. Para no describir Flyway dos veces, decidí agregarlo inmediatamente a nuestro futuro proyecto JRTB.
multifacético, multimodular:
¿Qué necesitamos hacer como parte de esto?
- Inicie una aplicación SpringBoot basada en Maven.
- Agregue Flyway allí: afortunadamente, se integran fácilmente.
- Agregue un esquema para las tablas que tenemos en la base de datos de ejemplo.
¿Qué es la ruta migratoria?
Para utilizar algo, primero hay que averiguar qué es y por qué. Flyway es una herramienta de control de versiones de bases de datos. Las palabras son bien conocidas, pero de alguna manera no se ha agregado la comprensión, ¿verdad? Intentemos describir el problema que resuelve la ruta migratoria. Digamos que tenemos un proyecto. Como todo en nuestro mundo, no es perfecto, por lo que no fue posible planificar y elaborar la versión final del proyecto. Cada vez aparecen ciertos matices no contabilizados. El proyecto utiliza una base de datos en su trabajo. Por supuesto, si el proyecto cambia, la estructura de la base de datos también puede cambiar. Digamos que agregamos un nuevo campo para una de las entidades de nuestro proyecto. ¿Cómo hacerlo?- Agregue este campo a nuestra entidad, actualice todo para que funcione la lógica de negocios.
- Actualizar la base de datos. La única forma posible es hacerlo manualmente. Para hacer esto, debe ingresar y registrar el script SQL necesario.
- Pero si tenemos más de un lugar donde desplegar nuestro proyecto, ¿es necesario hacerlo en cada uno de ellos?
- y si queremos volver atrás, ¿cómo sabemos exactamente en qué estado se encuentra ahora la estructura de la base de datos?
- ¿Cómo estaremos seguros de que el cambio de base de datos fue exitoso?
- ¿Cómo puedo tener la oportunidad de realizar un seguimiento de todos los cambios en la base de datos que tuvieron lugar en el proyecto?
Inicie SpringBoot + Flyway
¿Qué es la bota de primavera?
¿Qué estamos lanzando?... Para comprender qué y por qué estamos haciendo, debe decidir qué es SpringBoot. Primero, hablemos rápidamente (bueno, muy rápidamente) sobre Spring . Por el momento, es el estándar industrial de facto en el desarrollo de aplicaciones de servidor en Java. ¿Estándar de qué? ¿Cómo puedo explicarte esto? Spring es el esqueleto de la aplicación, sobre el que luego arrojamos la "carne": nuestra lógica empresarial. Con la ayuda de Spring (en adelante usaré este papel de calco para no perder el tiempo cambiando de idioma :D)) Spring nos da un punto de partida desde el cual empezamos a hacer todo. Es- ¿Quieres trabajar con una base de datos? ¿Quieres relacional? ¿Quieres no relacional? Aquí estamos con Spring Data.
- ¿Quieres trabajar con solicitudes http? Aquí tienes, Spring web (Spring MVC).
- ¿Necesitas un contenedor para todos tus objetos en un solo lugar? Aquí está Spring Core.
- ¿Necesita configurar la seguridad en un proyecto para que haya diferentes roles y cadena de mando? Seguridad de primavera.
- Justo cuando pensaba que sería bueno tener algo así, resulta que Spring ya tiene lo que necesita y se integra rápida y fácilmente.
Lanzando SpringBoot
Como ya entendimos qué es Maven, creemos un nuevo proyecto para nuestras necesidades. Para ello, sólo necesitas acceder a un sitio web especialmente creado para este asunto. Se llama Spring Initializr . Aquí debes completar y seleccionar lo que necesitas:- La herramienta de construcción del proyecto es gradle o maven. Como puede ver, Ant ya ni siquiera se menciona. Esta es una buena pista sobre qué herramientas de compilación merecen la pena.
- El lenguaje en el que puedes escribir es java, kotlin, groovy. Aquí todo es simple: todos son similares a JVM y ejecutan fácilmente código Java. Por cierto, vale la pena mirar Kotlin. Francamente, Groovy se ha vuelto poco interesante (hubo un momento en que cambiaron a grooves, pero pasó rápidamente).
- Versión Spring... Aquí debe comprender que las versiones de la parte principal de Spring y sus módulos son consistentes.
- Datos del proyecto. Ya he descrito estas cosas.
- Elegimos qué archivo se recopilará: Jar o War.
- Bueno, la versión Java de nuestra favorita. Y recientemente ha habido muchas de estas versiones... Esperaron años, y ahora hay dos por año.
- Maven: no en vano te hablamos de esto antes.
- Java es nuestro favorito :D
- Tomemos la versión 2.2.11. ¿Por qué no el más nuevo? Porque cuanto más nuevo sea, mayores serán las posibilidades de que haya algunos errores allí. Para nosotros no importa qué versión, pero la más antigua será más fiable. Por lo tanto, elegimos 2.2.11.
- Grupo: com.github.javarushcommunity
- Artefacto: springboot-flyway-demo
- Nombre: Demostración de SpringBoot + Flyway
- Descripción: El proyecto demuestra la integración entre SpringBoot y Flyway . (Sí, la capacidad de escribir documentación es una parte importante del desarrollo :))
- Nombre del paquete: com.github.javarushcommunity.springbootflywaydemo . Aquí nos crearán inmediatamente un paquete básico con una clase que iniciará nuestra aplicación.
- Embalaje: Tarro
- Java: 8. No nos adelantemos a la locomotora y tomemos el viejo ocho. ¿Por qué no 11? ¿Para qué? Para nuestro ejemplo, no veo el sentido.
spring.datasource.url=jdbc:mysql://localhost:3306/flyway_demo_db
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Ejecutamos el método principal nuevamente y obtenemos: Ahora necesitamos agregar al menos una migración. Para crear correctamente una migración, necesita tomar la siguiente plantilla: V<VERSIÓN>__<NOMBRE>.sql Usando esta plantilla, crearemos un archivo de migración llamado V00001__Create_country_table.sql en la carpeta apropiada: /src/main/resources/ db.migración/ . Creemos una tabla de países en ella. Tomemos el script del segundo artículo sobre la base de datos . Antes de comenzar, entremos y creemos una base de datos para trabajar: flyway_demo_db. Hagamos esto a través de MysqlWorkbench: Ahora podemos ejecutar el método principal nuevamente: Todo funcionó, pero como aún no tenemos nada en el proyecto, terminó de funcionar. Sin embargo, de los registros se desprende claramente ( lea qué son los registros ) que:
- Conectado exitosamente a la base de datos.
- La migración ha sido validada y todo está bien.
- Flyway ha creado una mesa para gestionar las migraciones.
- Y lo que comenzó la migración 00001: la creación del país fue un éxito.
Conclusión
Esta vez aprendimos cómo comprender y utilizar una herramienta de migración de bases de datos junto con SpringBoot. Esta información es necesaria para comprender qué es una herramienta de control de versiones de una base de datos, usando Flyway como ejemplo. Amigos, el código fuente del proyecto que les mostré está publicado en nuestra organización en Github . Si te gusta el ejemplo, dale una estrella y entenderé que mi trabajo es útil y que realmente vale la pena continuar. Tradicionalmente, sugiero suscribirme a mi cuenta de Github . A través de él realizo todo mi trabajo sobre código abierto y todos esos proyectos de demostración que invariablemente acompañan a mis artículos. Gracias a todos por leer. La próxima vez escribiremos nuestra solicitud. Habrá alguna teoría necesaria sobre Docker en el futuro, pero la diluiremos en gran medida con la práctica.Enlaces útiles
Hoy en día no hay muchos enlaces útiles. Prestad atención al vídeo de Evgeniy, ¡realmente merece la pena!- Sitio web para crear proyectos en primavera.
- Evgeniy Borisov - Constructor de primavera
- Documentación en primavera para Flyway
GO TO FULL VERSION