Introducción
Grails es un framework de desarrollo web de alto rendimiento que se basa en el lenguaje de programación Groovy. Está diseñado para simplificar el desarrollo de aplicaciones web mediante la convención sobre configuración, la integración con Spring y Hibernate, y una serie de características que permiten a los desarrolladores ser más productivos.
Objetivos del Tema
- Comprender qué es Grails y sus beneficios.
- Configurar un proyecto Grails.
- Conocer la estructura de un proyecto Grails.
- Crear una aplicación web básica con Grails.
- Realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) con Grails.
¿Qué es Grails?
Grails es un framework de desarrollo web que sigue el patrón de diseño MVC (Modelo-Vista-Controlador). Está construido sobre la plataforma Java y utiliza Groovy como lenguaje de programación. Grails proporciona una serie de características que facilitan el desarrollo rápido de aplicaciones web:
- Convención sobre configuración: Grails sigue un conjunto de convenciones que permiten a los desarrolladores centrarse en la lógica de la aplicación en lugar de la configuración.
- Integración con Spring y Hibernate: Grails se integra perfectamente con Spring para la gestión de dependencias y con Hibernate para la persistencia de datos.
- Productividad: Grails incluye herramientas y características que aumentan la productividad del desarrollador, como el scaffolding, que permite generar rápidamente código CRUD.
Configuración del Entorno
Requisitos Previos
- Java Development Kit (JDK) 8 o superior.
- Groovy 2.5 o superior.
- Grails 4.0 o superior.
Instalación de Grails
-
Descargar e instalar Grails:
- Visita la página oficial de Grails: Grails Downloads.
- Descarga la versión más reciente de Grails.
- Descomprime el archivo descargado y agrega el directorio
bin
de Grails a tu variable de entornoPATH
.
-
Verificar la instalación:
grails -version
Deberías ver la versión de Grails instalada.
Creación de un Proyecto Grails
Paso 1: Crear un Nuevo Proyecto
Para crear un nuevo proyecto Grails, utiliza el siguiente comando:
Este comando generará la estructura básica del proyecto.
Paso 2: Estructura del Proyecto
Una vez creado el proyecto, la estructura del directorio será similar a la siguiente:
nombreDelProyecto/ ├── grails-app/ │ ├── assets/ │ ├── conf/ │ ├── controllers/ │ ├── domain/ │ ├── i18n/ │ ├── init/ │ ├── services/ │ ├── taglib/ │ ├── utils/ │ └── views/ ├── src/ │ ├── integration-test/ │ ├── main/ │ └── test/ ├── build.gradle └── settings.gradle
Paso 3: Ejecutar la Aplicación
Para ejecutar la aplicación, navega al directorio del proyecto y utiliza el siguiente comando:
La aplicación estará disponible en http://localhost:8080
.
Creación de una Aplicación Web Básica
Paso 1: Crear un Dominio
Un dominio en Grails representa una tabla en la base de datos. Para crear un dominio, utiliza el siguiente comando:
Por ejemplo:
Paso 2: Definir el Dominio
Edita el archivo grails-app/domain/nombreDelProyecto/Book.groovy
para definir los atributos del dominio:
package nombreDelProyecto class Book { String title String author Date releaseDate static constraints = { title blank: false author blank: false releaseDate nullable: true } }
Paso 3: Crear un Controlador
Un controlador maneja las solicitudes HTTP y coordina la lógica de la aplicación. Para crear un controlador, utiliza el siguiente comando:
Por ejemplo:
Paso 4: Definir Acciones en el Controlador
Edita el archivo grails-app/controllers/nombreDelProyecto/BookController.groovy
para definir las acciones CRUD:
package nombreDelProyecto class BookController { def index() { respond Book.list() } def show(Long id) { respond Book.get(id) } def create() { respond new Book(params) } def save(Book book) { if (book.save(flush: true)) { redirect action: "show", id: book.id } else { render view: "create", model: [book: book] } } def edit(Long id) { respond Book.get(id) } def update(Book book) { if (book.save(flush: true)) { redirect action: "show", id: book.id } else { render view: "edit", model: [book: book] } } def delete(Long id) { Book.get(id)?.delete(flush: true) redirect action: "index" } }
Paso 5: Crear Vistas
Las vistas en Grails se encuentran en grails-app/views/nombreDelDominio/
. Crea las vistas index.gsp
, show.gsp
, create.gsp
, y edit.gsp
para manejar las diferentes acciones del controlador.
Ejercicio Práctico
Ejercicio 1: Crear una Aplicación de Biblioteca
- Crear un dominio
Author
con los atributosname
ybirthdate
. - Crear un controlador
AuthorController
con acciones CRUD. - Crear vistas para las acciones del controlador
Author
.
Solución
-
Crear el dominio
Author
:grails create-domain-class Author
-
Definir el dominio
Author
:package nombreDelProyecto class Author { String name Date birthdate static constraints = { name blank: false birthdate nullable: true } }
-
Crear el controlador
AuthorController
:grails create-controller Author
-
Definir acciones en
AuthorController
:package nombreDelProyecto class AuthorController { def index() { respond Author.list() } def show(Long id) { respond Author.get(id) } def create() { respond new Author(params) } def save(Author author) { if (author.save(flush: true)) { redirect action: "show", id: author.id } else { render view: "create", model: [author: author] } } def edit(Long id) { respond Author.get(id) } def update(Author author) { if (author.save(flush: true)) { redirect action: "show", id: author.id } else { render view: "edit", model: [author: author] } } def delete(Long id) { Author.get(id)?.delete(flush: true) redirect action: "index" } }
-
Crear vistas en
grails-app/views/author/
para las acciones del controlador.
Conclusión
En esta sección, hemos aprendido sobre el framework Grails, cómo configurar un proyecto Grails, y cómo crear una aplicación web básica con operaciones CRUD. Grails es una herramienta poderosa que puede aumentar significativamente la productividad del desarrollador al proporcionar un conjunto de características y convenciones que simplifican el desarrollo de aplicaciones web.
En el siguiente módulo, exploraremos otras bibliotecas y herramientas del ecosistema Groovy que pueden complementar y mejorar nuestras aplicaciones Grails.
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