En aquest tema, aprendrem com accedir a bases de dades utilitzant Groovy. Explorarem les biblioteques i eines que Groovy proporciona per interactuar amb bases de dades, així com exemples pràctics per il·lustrar aquests conceptes.

Continguts

  1. Introducció a l'Accés a Bases de Dades
  2. Configuració de la Connexió a la Base de Dades
  3. Operacions Bàsiques (CRUD)
  4. Utilització de GORM (Grails Object Relational Mapping)
  5. Exercicis Pràctics

  1. Introducció a l'Accés a Bases de Dades

Groovy facilita l'accés a bases de dades mitjançant diverses biblioteques i eines. Algunes de les més utilitzades són:

  • Groovy SQL: Una API simple per treballar amb SQL.
  • GORM: Una eina de mapeig objecte-relacional (ORM) que s'integra amb Grails.

  1. Configuració de la Connexió a la Base de Dades

Utilitzant Groovy SQL

Per començar a treballar amb bases de dades en Groovy, primer hem de configurar la connexió. Utilitzarem la classe Sql de la biblioteca groovy.sql.

Exemple de Connexió

@GrabConfig(systemClassLoader=true)
@Grab('org.hsqldb:hsqldb:2.4.1')
import groovy.sql.Sql

def dbUrl = 'jdbc:hsqldb:mem:testDB'
def dbUser = 'sa'
def dbPassword = ''
def dbDriver = 'org.hsqldb.jdbcDriver'

def sql = Sql.newInstance(dbUrl, dbUser, dbPassword, dbDriver)
println "Connexió establerta amb èxit!"

Explicació del Codi

  • @GrabConfig i @Grab: Aquests són utilitzats per descarregar i incloure la dependència de la base de dades HSQLDB.
  • Sql.newInstance: Crea una nova instància de connexió a la base de dades amb els paràmetres proporcionats.

  1. Operacions Bàsiques (CRUD)

Crear una Taula

sql.execute '''
    CREATE TABLE persones (
        id INTEGER IDENTITY,
        nom VARCHAR(50),
        edat INTEGER
    )
'''
println "Taula 'persones' creada amb èxit!"

Inserir Dades

sql.execute "INSERT INTO persones (nom, edat) VALUES ('Joan', 30)"
sql.execute "INSERT INTO persones (nom, edat) VALUES ('Maria', 25)"
println "Dades inserides amb èxit!"

Llegir Dades

sql.eachRow('SELECT * FROM persones') { row ->
    println "ID: ${row.id}, Nom: ${row.nom}, Edat: ${row.edat}"
}

Actualitzar Dades

sql.execute "UPDATE persones SET edat = 31 WHERE nom = 'Joan'"
println "Dades actualitzades amb èxit!"

Esborrar Dades

sql.execute "DELETE FROM persones WHERE nom = 'Maria'"
println "Dades esborrades amb èxit!"

  1. Utilització de GORM (Grails Object Relational Mapping)

GORM és una eina poderosa per treballar amb bases de dades en aplicacions Grails. Proporciona una interfície de mapeig objecte-relacional (ORM) que simplifica les operacions amb bases de dades.

Configuració de GORM

Per utilitzar GORM, primer hem de configurar una aplicació Grails. Aquí només proporcionarem una visió general.

Exemple de Domini

class Persona {
    String nom
    Integer edat

    static constraints = {
        nom blank: false
        edat min: 0
    }
}

Operacions Bàsiques amb GORM

Inserir Dades

def persona = new Persona(nom: 'Joan', edat: 30)
persona.save()
println "Persona guardada amb èxit!"

Llegir Dades

def persones = Persona.list()
persones.each { persona ->
    println "ID: ${persona.id}, Nom: ${persona.nom}, Edat: ${persona.edat}"
}

Actualitzar Dades

def persona = Persona.findByNom('Joan')
persona.edat = 31
persona.save()
println "Persona actualitzada amb èxit!"

Esborrar Dades

def persona = Persona.findByNom('Joan')
persona.delete()
println "Persona esborrada amb èxit!"

  1. Exercicis Pràctics

Exercici 1: Crear i Manipular una Taula

  1. Crea una taula anomenada llibres amb les columnes id, títol i autor.
  2. Insereix almenys 3 registres a la taula llibres.
  3. Llegeix i mostra tots els registres de la taula llibres.
  4. Actualitza el títol d'un dels llibres.
  5. Esborra un dels llibres de la taula.

Solució

// Crear taula
sql.execute '''
    CREATE TABLE llibres (
        id INTEGER IDENTITY,
        titol VARCHAR(100),
        autor VARCHAR(50)
    )
'''
println "Taula 'llibres' creada amb èxit!"

// Inserir dades
sql.execute "INSERT INTO llibres (titol, autor) VALUES ('El Quixot', 'Miguel de Cervantes')"
sql.execute "INSERT INTO llibres (titol, autor) VALUES ('1984', 'George Orwell')"
sql.execute "INSERT INTO llibres (titol, autor) VALUES ('Cien años de soledad', 'Gabriel García Márquez')"
println "Dades inserides amb èxit!"

// Llegir dades
sql.eachRow('SELECT * FROM llibres') { row ->
    println "ID: ${row.id}, Títol: ${row.titol}, Autor: ${row.autor}"
}

// Actualitzar dades
sql.execute "UPDATE llibres SET titol = 'Nineteen Eighty-Four' WHERE titol = '1984'"
println "Dades actualitzades amb èxit!"

// Esborrar dades
sql.execute "DELETE FROM llibres WHERE titol = 'El Quixot'"
println "Dades esborrades amb èxit!"

Conclusió

En aquest tema, hem après com accedir a bases de dades utilitzant Groovy. Hem vist com configurar la connexió, realitzar operacions bàsiques (CRUD) i utilitzar GORM per simplificar aquestes operacions en aplicacions Grails. Els exercicis pràctics proporcionats ajuden a reforçar els conceptes apresos. En el següent tema, explorarem com treballar amb XML i JSON en Groovy.

© Copyright 2024. Tots els drets reservats