6. Configuración de Base de Datos - dblancou/ApiLetterboxdProyectoFinal GitHub Wiki

La configuración de la base de datos es un aspecto fundamental de la API del Proyecto Final. Esta API utiliza MySQL como sistema de gestión de bases de datos relacionales para almacenar y gestionar los datos relacionados con películas, listas de películas, reseñas y usuarios.

Configuración de MySQL

Para que la API se conecte a la base de datos MySQL, es necesario configurar ciertas propiedades en el archivo application.properties. Estas propiedades incluyen la URL de la base de datos, el nombre de usuario y la contraseña. Además, se configuran propiedades específicas de JPA/Hibernate para la gestión de la persistencia de datos.

Archivo application.properties

El archivo application.properties contiene todas las configuraciones necesarias para conectar y configurar la base de datos MySQL. A continuación, se detallan las principales configuraciones:

spring.application.name=ApiProyectoFinal

logging.level.com.example.ApiProyectoFinal.security.services.AuthServiceImpl=DEBUG

# MySQL Database Configuration spring.datasource.url=jdbc:mysql://localhost:3307/ApiProyectoFinal spring.datasource.username=root spring.datasource.password=root

# JPA/Hibernate Properties spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true

# Specify the DB dialect spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

# JWT Secret jwt.secret=lMCvj7Sirkk41OpuXDBKoSA1YeQ4aTeHmP4gzoyoaLk= jwt.expiration=3600000

Explicación de las Propiedades

  • spring.datasource.url: Especifica la URL de conexión a la base de datos MySQL. En este caso, la base de datos está alojada localmente en el puerto 3307 y el nombre de la base de datos es ApiProyectoFinal.

  • spring.datasource.username: Nombre de usuario para conectarse a la base de datos.

  • spring.datasource.password: Contraseña para conectarse a la base de datos.

  • spring.jpa.hibernate.ddl-auto: Configura la estrategia de creación y actualización del esquema de la base de datos. La opción update actualiza el esquema de la base de datos en cada inicio de la aplicación sin eliminar datos existentes.

  • spring.jpa.show-sql: Si está configurado en true, Hibernate mostrará las consultas SQL generadas en la consola.

  • spring.jpa.properties.hibernate.format_sql: Si está configurado en true, formatea las consultas SQL generadas para que sean más legibles.

  • spring.jpa.properties.hibernate.dialect: Especifica el dialecto de la base de datos. En este caso, se usa org.hibernate.dialect.MySQL8Dialect para MySQL.

Configuración Adicional

Creación de la Base de Datos

Antes de ejecutar la API, asegúrate de que la base de datos MySQL esté configurada correctamente y la base de datos ApiProyectoFinal esté creada. Puedes crear la base de datos utilizando un cliente MySQL o desde la línea de comandos:

CREATE DATABASE ApiProyectoFinal;

Conexión a la Base de Datos

Asegúrate de que el servidor MySQL esté corriendo y que las credenciales especificadas en application.properties coincidan con las de tu instalación de MySQL. Puedes ajustar las propiedades de conexión según tus necesidades (por ejemplo, si cambias el puerto, nombre de usuario o contraseña).

Uso de Hibernate y JPA

La API utiliza Hibernate como el proveedor de JPA para la persistencia de datos. Hibernate se encarga de la traducción de las operaciones realizadas en los repositorios a consultas SQL ejecutadas en la base de datos. Las entidades JPA (Film, MovieList, Review, User, etc.) están mapeadas a las tablas de la base de datos y definen la estructura de los datos almacenados.

Estrategia de DDL

La estrategia spring.jpa.hibernate.ddl-auto=update asegura que el esquema de la base de datos se actualice automáticamente en cada inicio de la aplicación. Esto es útil durante el desarrollo para asegurarse de que los cambios en las entidades se reflejen en la base de datos. Sin embargo, en un entorno de producción, es recomendable revisar y aplicar las migraciones de base de datos manualmente o utilizando una herramienta de gestión de migraciones como Flyway o Liquibase.