En este módulo, aprenderemos cómo interactuar con bases de datos utilizando Groovy. Cubriremos desde la configuración inicial hasta la ejecución de consultas y la manipulación de datos. Este conocimiento es esencial para cualquier desarrollador que necesite trabajar con datos persistentes en sus aplicaciones.
Contenido
Configuración del Entorno
Antes de comenzar a trabajar con bases de datos en Groovy, necesitamos configurar nuestro entorno. Asegúrate de tener instalado Groovy y un gestor de bases de datos como MySQL, PostgreSQL o SQLite.
Dependencias
Para interactuar con bases de datos, utilizaremos la biblioteca groovy-sql
. Puedes agregar esta dependencia en tu archivo build.gradle
si estás utilizando Gradle:
dependencies { implementation 'org.codehaus.groovy:groovy-sql:3.0.9' implementation 'mysql:mysql-connector-java:8.0.23' // Ejemplo para MySQL }
Conexión a una Base de Datos
Para conectarnos a una base de datos, necesitamos proporcionar la URL de conexión, el nombre de usuario y la contraseña. Aquí hay un ejemplo de cómo hacerlo en Groovy:
import groovy.sql.Sql def dbUrl = 'jdbc:mysql://localhost:3306/mi_base_de_datos' def dbUser = 'usuario' def dbPassword = 'contraseña' def sql = Sql.newInstance(dbUrl, dbUser, dbPassword, 'com.mysql.cj.jdbc.Driver')
Explicación del Código
dbUrl
: La URL de conexión a la base de datos.dbUser
: El nombre de usuario para la base de datos.dbPassword
: La contraseña para la base de datos.Sql.newInstance
: Crea una nueva instancia deSql
que se utilizará para ejecutar consultas.
Ejecutar Consultas SQL
Una vez que estamos conectados a la base de datos, podemos ejecutar consultas SQL. Aquí hay un ejemplo de cómo ejecutar una consulta SELECT:
def query = 'SELECT * FROM usuarios' sql.eachRow(query) { row -> println "ID: ${row.id}, Nombre: ${row.nombre}, Email: ${row.email}" }
Explicación del Código
query
: La consulta SQL que queremos ejecutar.sql.eachRow
: Ejecuta la consulta y itera sobre cada fila del resultado.row
: Representa una fila del resultado de la consulta.
Manipulación de Datos
Podemos insertar, actualizar y eliminar datos utilizando las consultas SQL correspondientes. Aquí hay ejemplos de cada operación:
Insertar Datos
def insertQuery = 'INSERT INTO usuarios (nombre, email) VALUES (?, ?)' sql.execute(insertQuery, ['Juan Perez', '[email protected]'])
Actualizar Datos
def updateQuery = 'UPDATE usuarios SET email = ? WHERE nombre = ?' sql.execute(updateQuery, ['[email protected]', 'Juan Perez'])
Eliminar Datos
Explicación del Código
sql.execute
: Ejecuta una consulta SQL que no devuelve un conjunto de resultados (INSERT, UPDATE, DELETE).- Los signos de interrogación (
?
) en las consultas son marcadores de posición para los parámetros que se pasan como una lista en el segundo argumento desql.execute
.
Ejercicio Práctico
Ejercicio
- Conéctate a una base de datos de tu elección.
- Crea una tabla llamada
productos
con las columnasid
,nombre
yprecio
. - Inserta al menos tres registros en la tabla
productos
. - Realiza una consulta SELECT para obtener todos los productos y muéstralos en la consola.
- Actualiza el precio de uno de los productos.
- Elimina uno de los productos.
Solución
import groovy.sql.Sql def dbUrl = 'jdbc:mysql://localhost:3306/mi_base_de_datos' def dbUser = 'usuario' def dbPassword = 'contraseña' def sql = Sql.newInstance(dbUrl, dbUser, dbPassword, 'com.mysql.cj.jdbc.Driver') // Crear tabla def createTableQuery = ''' CREATE TABLE productos ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(255) NOT NULL, precio DECIMAL(10, 2) NOT NULL ) ''' sql.execute(createTableQuery) // Insertar registros def insertQuery = 'INSERT INTO productos (nombre, precio) VALUES (?, ?)' sql.execute(insertQuery, ['Producto A', 10.50]) sql.execute(insertQuery, ['Producto B', 20.75]) sql.execute(insertQuery, ['Producto C', 15.30]) // Consultar registros def selectQuery = 'SELECT * FROM productos' sql.eachRow(selectQuery) { row -> println "ID: ${row.id}, Nombre: ${row.nombre}, Precio: ${row.precio}" } // Actualizar registro def updateQuery = 'UPDATE productos SET precio = ? WHERE nombre = ?' sql.execute(updateQuery, [12.00, 'Producto A']) // Eliminar registro def deleteQuery = 'DELETE FROM productos WHERE nombre = ?' sql.execute(deleteQuery, ['Producto B'])
Conclusión
En esta sección, hemos aprendido cómo configurar nuestro entorno para trabajar con bases de datos en Groovy, cómo conectarnos a una base de datos, ejecutar consultas SQL y manipular datos. Estos conocimientos son fundamentales para cualquier desarrollador que necesite trabajar con datos persistentes en sus aplicaciones. En el próximo módulo, exploraremos cómo trabajar con XML y JSON en Groovy.
Curso de Programación Groovy
Módulo 1: Introducción a Groovy
Módulo 2: Sintaxis de Groovy y Características del Lenguaje
Módulo 3: Programación Orientada a Objetos en Groovy
Módulo 4: Características Avanzadas de Groovy
Módulo 5: Groovy en la Práctica
- Entrada/Salida de Archivos
- Trabajando con XML y JSON
- Acceso a Bases de Datos
- Desarrollo Web con Groovy
Módulo 6: Pruebas y Depuración
Módulo 7: Ecosistema y Herramientas de Groovy
- Herramienta de Construcción Gradle
- Framework de Pruebas Spock
- Framework Grails
- Otras Bibliotecas y Herramientas de Groovy
Módulo 8: Mejores Prácticas y Temas Avanzados
- Estilo de Código y Convenciones
- Optimización del Rendimiento
- Consideraciones de Seguridad
- Concurrencia en Groovy