Configurar la conexión entre un proyecto Spring Boot y una base de datos MySQL es uno de los pasos fundamentales para construir una API funcional. Aquí se explica cómo diseñar un modelo entidad-relación con cuatro tablas interconectadas y cómo establecer la conexión usando apenas cuatro líneas en el archivo de configuración de Spring.
¿Cómo está diseñado el modelo entidad-relación de la pizzería?
El modelo de datos se compone de cuatro tablas que representan la lógica de negocio de una pizzería [00:14]:
- Pizza: contiene el identificador único (
id_pizza), nombre, descripción, precio (definido como DECIMAL(5,2), es decir, cinco dígitos donde dos son decimales) y tres columnas de tipo TINYINT en MySQL que funcionan como valores booleanos: si la pizza es vegetariana, si es vegana y si está disponible.
- Pizza order: almacena el identificador de la orden, una clave foránea (
id_customer) que la relaciona con la tabla de clientes, la fecha de creación, el valor total, el método de entrega (un CHAR(1) que indica si es a domicilio, para recoger o para comer en el local) y notas adicionales donde el cliente puede especificar cambios en ingredientes.
- Customer: guarda la identificación del cliente, nombre, dirección, email y número de teléfono.
- Order item: conecta pizzas con órdenes. Tiene una relación uno a uno con la tabla pizza y una relación uno a muchos con pizza order [02:37]. Su clave primaria compuesta está formada por
id_item e id_order, lo que significa que el valor de id_item se reinicia por cada orden. Incluye además la cantidad y el precio ajustado según cuántas pizzas se pidan.
Este diseño permite que una sola orden contenga múltiples ítems, cada uno vinculado a una pizza específica con su precio calculado.
¿Qué líneas se necesitan en application.properties para conectar MySQL?
La conexión se configura dentro del archivo application.properties, ubicado en la carpeta resources [03:30]. Se requieren cuatro propiedades:
properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/pizzeria?createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=admin
- La primera línea indica el driver de MySQL que el proyecto utilizará.
- La segunda establece la URL de conexión con el protocolo
jdbc:mysql, apuntando a localhost en el puerto 3306 (puerto por defecto de MySQL). El parámetro createDatabaseIfNotExist=true le ordena a MySQL crear la base de datos si no existe [04:28]. Es importante saber que esta instrucción solo funciona en MySQL.
- Las dos últimas líneas definen el usuario y la contraseña de acceso.
Al ejecutar la aplicación, en la consola aparecen tres líneas clave relacionadas con HikariCP [05:16]. HikariCP es un connection pool que gestiona automáticamente las conexiones a la base de datos, escalando el número de conexiones según la cantidad de usuarios concurrentes en la aplicación.
¿Qué hace la propiedad ddl-auto de Hibernate?
Una vez establecida la conexión, se agrega una propiedad adicional para el manejo del esquema [05:40]:
properties
spring.jpa.hibernate.ddl-auto=update
Las opciones disponibles son:
- update: actualiza el esquema cuando detecta cambios en los entities sin borrar datos existentes.
- create: destruye todo lo previo y recrea el esquema desde cero.
- create-drop: similar a create, pero además elimina el esquema al detener la aplicación.
- none: deshabilita el manejo de DDL; no crea ni modifica tablas, solo opera sobre los datos.
- validate: verifica que el esquema sea válido y lanza una excepción si no lo es, sin realizar cambios estructurales.
La opción recomendada para desarrollo es update, ya que Hibernate, la implementación de JPA que usa Spring Data por defecto, replica automáticamente en la base de datos cualquier cambio estructural hecho en los entities del proyecto [06:35].
¿Cómo visualizar las consultas SQL generadas por el proyecto?
Para monitorear cómo el proyecto traduce las operaciones a SQL, se habilita la siguiente propiedad [07:08]:
properties
spring.jpa.show-sql=true
Con esto activo, cada operación que se ejecute mostrará en consola la sentencia SQL correspondiente, lo cual resulta muy útil para depuración y aprendizaje.
Con estas pocas líneas de configuración, el proyecto queda listo para interactuar con MySQL. El siguiente paso natural es crear los entities con JPA para que Hibernate genere las tablas automáticamente. ¿Ya tienes tu base de datos configurada? Comparte tu experiencia en los comentarios.