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 deSqlque 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
productoscon las columnasid,nombreyprecio. - 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
