SlideShare una empresa de Scribd logo
1 de 6
Grails: Framework
para el desarrollo de
aplicaciones Web (4ta Parte)
Grails es un framework orientado al desarrollo de aplicaciones web de forma sencilla,
rápida y divertida.

                                                     ✔   Criteria
                                                     ✔   Query-by-example


                                                  Donde cada una de estas formas tiene
                                                  particularidades que las diferencian tanto por
                                                  la facilidad de uso, como por la orientación
                                                  que se da a cada una de ellas.
Una de la características principales que
tiene cualquier aplicación es la posibilidad de   Dynamic Finders
poder obtener información variada en base a
consultas realizadas a la base de datos, es       Esta es una de las formas mas sencillas de
por esta razón que en esta entrega veremos        hacer     consultas,     algunas    de sus
como realizar estas consultas.                    características son las siguientes:
                                                     ✔   Traducen      automáticamente        las
                                                         propiedades de la clase, para
Crear consultas                                          convertirse en parte de la consulta.
El ORM que posee Grails (GORM), soporta              ✔   Funcionan de similar forma a los
varias formas de poder realizar consultas,               filtros
entre las que destacan:
                                                     ✔   Se limitan a realizar consultas a una
   ✔   Dynamic Finders                                   sola clase
   ✔   HQL
Algunos ejemplos de este tipo de consultas, los mostramos a continuación:


Recupera la instancia de clase cuyo id es el 3
Expositor.get(3)


Cuenta el numero de objetos de la clase Evento
expositor.count()


Cuenta la cantidad de expositores cuya país de origen es Bolivia
Expositor.countByNacionalidad('Bolivia')
Listado completo de todos los objetos de la clase
Expositor.list()




Listado de todos los objetos de la clase siguiendo el orden especificado
Expositor.listOrderByNacionalidad()




Devuelve el primer expositor cuyo pais de origen es Argentina y Bolivia
Expositor.findByNacionalidad ('Bolivia')
Devuelve el primer expositor cuyo apellido paterno sea Ayarde y cuyo país de origen es Bolivia
Expositor.findWhere([ "paterno": "Ayarde", nacionalidad: "Bolivia"])




Otras opciones mas generales son: findAllBy, findAllWhere, getAll que tienen un
funcionamiento análogo a los anteriores, con la diferencia que estos devuelven todas las
instancias y no solo la primera instancia coincidente. Algunos ejemplos son mostrados a
continuación:
Devuelve todos los eventos en cuyo nombre aparezca la palabra informática
Expositor.findAllByNombreLike("%an%")




Devuelve todos los eventos en cuyo nombre aparezca la palabra Python y la fecha de inicio del
evento tenga una antigüedad menor a un mes
Evento.findAllByNombreLikeAndIniciaDateGreaterThan("%Python%", new Date()-30)


Expositor.findAllByNacionalidad ('Bolivia')




Expositor.findAllByNacionalidadAndPaterno ('Bolivia','Saavedra')
el mismo efecto con la consulta
Expositor.findAllWhere([ "paterno": "Saavedra", nacionalidad: "Bolivia"])


En caso de desear implementar una paginación a los resultados obtenidos, podríamos hacer
uso de la siguiente consulta:


Expositor.list(max: 10, offset: 20, sort: "nacionalidad", order "desc")


Consultas HQL
Si bien las consultas dinámicas son muy sencillas de utilizar y componer según los atributos de
una clase, muchas veces en el desarrollo de aplicaciones precisamos contar con consultas mas
complejas, para esto podemos hacer uso de HQL
Básicamente HQL es una forma ampliada y detallada de hacer consultas, y que puede ir
acompañando a: find, findAll y executeQuery, como se muestra en el siguiente ejemplo


Expositor.findAll("from Expositor as e order by e.nacionalidad asc")




Expositor.findAll("from Expositor as e
                       where e.nombre = ?
                       and e.nacionalidad = ?
                       order by e.paterno asc", ["Kathleen", "Brasil"])
El mismo resultado puede ser obtenido por la siguiente consulta, donde la diferencia radica en
el manejo de parámetros utilizados en la consulta.


Expositor.findAll("from Expositor as e
                       where e.nombre = :nombre
                       and e.nacionalidad = :nacionalidad
                       order by e.paterno asc", [nacionalidad :"Brasil", nombre :
"Kathleen"]


Como en los casos anteriores, findAll permite recuperar un conjunto de instancias y no solo la
primera coincidente.


Expositor.findAll("From Expositor e", max: 10, offset: 20, sort: "nacionalidad", order
"desc")


executeQuery, presenta algunas diferencias a las anteriores consultas, por que no
necesariamente debes recuperar todo el registro o la instancia de clase, tan solo puedes optar
por recuperar el o los campos que sean necesarios, como en el ejemplo siguiente:


Expositor.executeQuery("select e.nombre from Expositor e where e.nacionalidad = ?",
"Bolivia")


Consultas en base a Criterios
Otro tipo de realizar consultas, es la creación de criterios, con la posibilidad de crear o incluir
asociaciones. En los siguientes ejemplos mostramos como crear este tipo de consultas.
Devuelve los eventos que se iniciaron en los últimos 30 días y en cuyo nombre del evento figure
la palabra Python


def hoy = new Date()
def eventos = Evento.withCriteria {
    like("nombre","%Python%")
    between("inicia",hoy-30, hoy)
    maxResults(10)}


Devuelve los eventos que se iniciaron en los últimos 30 días, además eventos asociados a
conferencias realizadas en los últimos 7 días y en cuyo nombre figure la palabra Grails.


def hoy = new Date()
def resultado = Evento.withCriteria {
    conferencias {
        like("titulo","%Grails%")
        between("fecha", hoy-7, hoy)
    }
    between("inicia",hoy-30, hoy)
    maxResults(10)
Devuelve los eventos donde cuyas conferencias se hayan realizado en los últimos 30 días.


def e = Evento.createCriteria()
def hoy = new Date()
def resultado = e.list{
    conferencias{
        between("fecha",hoy-30, hoy)
    }
}




Referencias
[1]    http://www.grails.org
[2]    Getting Started with Grails
[3]    The Definitive Guide to Grails


Autor




Esteban Saavedra López
Líder de la Comunidad ATIX (Oruro – Bolivia)
Activista de Software Libre en Bolivia
jesaavedra@opentelematics.org
http://jesaavedra.opentelematics.org

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Sesiones y cookies en php
Sesiones y cookies en phpSesiones y cookies en php
Sesiones y cookies en php
 
Semana 5 Angular Rutas y Controladores
Semana 5   Angular Rutas y ControladoresSemana 5   Angular Rutas y Controladores
Semana 5 Angular Rutas y Controladores
 
Presentacion wpf
Presentacion wpfPresentacion wpf
Presentacion wpf
 
patron de diseño MVVMo.pptx
patron de diseño MVVMo.pptxpatron de diseño MVVMo.pptx
patron de diseño MVVMo.pptx
 
Aprender a programar aplicaciones moviles
Aprender a programar aplicaciones movilesAprender a programar aplicaciones moviles
Aprender a programar aplicaciones moviles
 
Perfiles en maven
Perfiles en mavenPerfiles en maven
Perfiles en maven
 
Java server faces
Java server facesJava server faces
Java server faces
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
06. jsf (java server faces) (1)
06. jsf (java server faces) (1)06. jsf (java server faces) (1)
06. jsf (java server faces) (1)
 
Mvc
MvcMvc
Mvc
 
Filtrado de recursos en Maven
Filtrado de recursos en MavenFiltrado de recursos en Maven
Filtrado de recursos en Maven
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Curso JSF - Conceptos Basicos
Curso JSF - Conceptos BasicosCurso JSF - Conceptos Basicos
Curso JSF - Conceptos Basicos
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
 
Joomla! en 10 minutos - JoomlaDay Sevilla 2015
Joomla! en 10 minutos  - JoomlaDay Sevilla 2015Joomla! en 10 minutos  - JoomlaDay Sevilla 2015
Joomla! en 10 minutos - JoomlaDay Sevilla 2015
 
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONESJAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
JAVA SERVER FACES - LECCION 02 - NAVEGACION Y LENGUAJES DE EXPRESIONES
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
09b jsf (1)
09b jsf (1)09b jsf (1)
09b jsf (1)
 
ASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVCASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVC
 

Destacado

ein SCHOENER MP3 PLAYER YP-S3.3
ein SCHOENER MP3 PLAYER YP-S3.3ein SCHOENER MP3 PLAYER YP-S3.3
ein SCHOENER MP3 PLAYER YP-S3.3marco678
 
Gabarito UFPE - 2º dia (14/01/13)
Gabarito UFPE - 2º dia (14/01/13)Gabarito UFPE - 2º dia (14/01/13)
Gabarito UFPE - 2º dia (14/01/13)Portal NE10
 
Ay g sensor de detonación o golpeteo (ks)
Ay g sensor de detonación o golpeteo (ks)Ay g sensor de detonación o golpeteo (ks)
Ay g sensor de detonación o golpeteo (ks)Jeronimo Valenzuela
 
Gunsandroses
GunsandrosesGunsandroses
Gunsandrosesswapna
 
Starwars3
Starwars3Starwars3
Starwars3shiking
 
Anleitung zum Unglücklichsein
Anleitung zum UnglücklichseinAnleitung zum Unglücklichsein
Anleitung zum UnglücklichseinHorbach
 
Umsatzstarke Hotels Deutschland
Umsatzstarke Hotels DeutschlandUmsatzstarke Hotels Deutschland
Umsatzstarke Hotels DeutschlandMOONDA
 
Starwars3
Starwars3Starwars3
Starwars3shiking
 
Handballfest - TV Langen
Handballfest - TV LangenHandballfest - TV Langen
Handballfest - TV LangenPanbo
 
Difusion taller ine sadi 2012
Difusion taller ine sadi 2012Difusion taller ine sadi 2012
Difusion taller ine sadi 2012usapuka
 
Pseudomonas aeruginosa productores de β lactamasa de espectro extendido en un...
Pseudomonas aeruginosa productores de β lactamasa de espectro extendido en un...Pseudomonas aeruginosa productores de β lactamasa de espectro extendido en un...
Pseudomonas aeruginosa productores de β lactamasa de espectro extendido en un...usapuka
 

Destacado (20)

Webkonferenzen
WebkonferenzenWebkonferenzen
Webkonferenzen
 
Canto A La Paz (Canto E Letra)
Canto A La Paz (Canto E Letra)Canto A La Paz (Canto E Letra)
Canto A La Paz (Canto E Letra)
 
web2.0
web2.0web2.0
web2.0
 
Asignacion Wb 2.0, Dario
Asignacion Wb 2.0, DarioAsignacion Wb 2.0, Dario
Asignacion Wb 2.0, Dario
 
Symfony
SymfonySymfony
Symfony
 
ein SCHOENER MP3 PLAYER YP-S3.3
ein SCHOENER MP3 PLAYER YP-S3.3ein SCHOENER MP3 PLAYER YP-S3.3
ein SCHOENER MP3 PLAYER YP-S3.3
 
Open Content
Open ContentOpen Content
Open Content
 
Gabarito UFPE - 2º dia (14/01/13)
Gabarito UFPE - 2º dia (14/01/13)Gabarito UFPE - 2º dia (14/01/13)
Gabarito UFPE - 2º dia (14/01/13)
 
Ay g sensor de detonación o golpeteo (ks)
Ay g sensor de detonación o golpeteo (ks)Ay g sensor de detonación o golpeteo (ks)
Ay g sensor de detonación o golpeteo (ks)
 
Seminare
SeminareSeminare
Seminare
 
Gunsandroses
GunsandrosesGunsandroses
Gunsandroses
 
Starwars3
Starwars3Starwars3
Starwars3
 
Anleitung zum Unglücklichsein
Anleitung zum UnglücklichseinAnleitung zum Unglücklichsein
Anleitung zum Unglücklichsein
 
Umsatzstarke Hotels Deutschland
Umsatzstarke Hotels DeutschlandUmsatzstarke Hotels Deutschland
Umsatzstarke Hotels Deutschland
 
Starwars3
Starwars3Starwars3
Starwars3
 
Handballfest - TV Langen
Handballfest - TV LangenHandballfest - TV Langen
Handballfest - TV Langen
 
Difusion taller ine sadi 2012
Difusion taller ine sadi 2012Difusion taller ine sadi 2012
Difusion taller ine sadi 2012
 
Recherche von informationen ws 2012 13
Recherche von informationen ws 2012 13Recherche von informationen ws 2012 13
Recherche von informationen ws 2012 13
 
Comienzo curso10 11
Comienzo curso10 11Comienzo curso10 11
Comienzo curso10 11
 
Pseudomonas aeruginosa productores de β lactamasa de espectro extendido en un...
Pseudomonas aeruginosa productores de β lactamasa de espectro extendido en un...Pseudomonas aeruginosa productores de β lactamasa de espectro extendido en un...
Pseudomonas aeruginosa productores de β lactamasa de espectro extendido en un...
 

Similar a Grails: Framework para el desarrollo de aplicaciones Web No 4

Similar a Grails: Framework para el desarrollo de aplicaciones Web No 4 (20)

S6-PD1.pptx
S6-PD1.pptxS6-PD1.pptx
S6-PD1.pptx
 
Taller de Grails
Taller de GrailsTaller de Grails
Taller de Grails
 
Temario
Temario Temario
Temario
 
Serarch engines y Solr, JUG Argentina
Serarch engines y Solr, JUG ArgentinaSerarch engines y Solr, JUG Argentina
Serarch engines y Solr, JUG Argentina
 
3. La Recuperacion De Informacion
3. La Recuperacion De Informacion3. La Recuperacion De Informacion
3. La Recuperacion De Informacion
 
Tesis Licenciatura
Tesis LicenciaturaTesis Licenciatura
Tesis Licenciatura
 
Grupo 8.pptx
Grupo 8.pptxGrupo 8.pptx
Grupo 8.pptx
 
04 7n1is exposicion diseno-dialogos
04 7n1is exposicion diseno-dialogos04 7n1is exposicion diseno-dialogos
04 7n1is exposicion diseno-dialogos
 
04 7n1is exposicion diseno-dialogos
04 7n1is exposicion diseno-dialogos04 7n1is exposicion diseno-dialogos
04 7n1is exposicion diseno-dialogos
 
S6-PD1-3.2 LINQ
S6-PD1-3.2 LINQS6-PD1-3.2 LINQ
S6-PD1-3.2 LINQ
 
Servicio web
Servicio web Servicio web
Servicio web
 
Javascript + Angular Sesion 4
Javascript + Angular Sesion 4Javascript + Angular Sesion 4
Javascript + Angular Sesion 4
 
Clase Principal Semana 1 Texto
Clase Principal Semana 1 TextoClase Principal Semana 1 Texto
Clase Principal Semana 1 Texto
 
Grails
GrailsGrails
Grails
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de aries
 
Trabajo De Ntic Spdf
Trabajo De Ntic SpdfTrabajo De Ntic Spdf
Trabajo De Ntic Spdf
 
9.laravel
9.laravel9.laravel
9.laravel
 
Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en access
 
Juan iza TRABAJO
Juan iza TRABAJOJuan iza TRABAJO
Juan iza TRABAJO
 
Herramientas del uso del internet..
Herramientas del uso del internet..Herramientas del uso del internet..
Herramientas del uso del internet..
 

Más de Esteban Saavedra (20)

Atix30
Atix30Atix30
Atix30
 
Atix29
Atix29Atix29
Atix29
 
Atix28
Atix28Atix28
Atix28
 
Atix27
Atix27Atix27
Atix27
 
Atix26
Atix26Atix26
Atix26
 
Atix25
Atix25Atix25
Atix25
 
Rabbitmq
RabbitmqRabbitmq
Rabbitmq
 
Ansible
AnsibleAnsible
Ansible
 
Perl
PerlPerl
Perl
 
Atix24
Atix24Atix24
Atix24
 
Atix23
Atix23Atix23
Atix23
 
Lineas Base Migracion a Software Libre
Lineas Base Migracion a Software LibreLineas Base Migracion a Software Libre
Lineas Base Migracion a Software Libre
 
Seguridad Sistemas de Gobierno
Seguridad Sistemas de GobiernoSeguridad Sistemas de Gobierno
Seguridad Sistemas de Gobierno
 
Tunneling: Esquivando Restricciones de Proxies y Firewalls
Tunneling: Esquivando Restricciones de Proxies y FirewallsTunneling: Esquivando Restricciones de Proxies y Firewalls
Tunneling: Esquivando Restricciones de Proxies y Firewalls
 
Bi Un Modelo Eficiente para Gerenciar Empresas
Bi Un Modelo Eficiente para Gerenciar EmpresasBi Un Modelo Eficiente para Gerenciar Empresas
Bi Un Modelo Eficiente para Gerenciar Empresas
 
Clouds privadas
Clouds privadasClouds privadas
Clouds privadas
 
Introduccion Computacion Ubicua
Introduccion Computacion UbicuaIntroduccion Computacion Ubicua
Introduccion Computacion Ubicua
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Avances Tecnologicos
Avances TecnologicosAvances Tecnologicos
Avances Tecnologicos
 
Dni Electronico Bolivia
Dni Electronico BoliviaDni Electronico Bolivia
Dni Electronico Bolivia
 

Último

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (19)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Grails: Framework para el desarrollo de aplicaciones Web No 4

  • 1. Grails: Framework para el desarrollo de aplicaciones Web (4ta Parte) Grails es un framework orientado al desarrollo de aplicaciones web de forma sencilla, rápida y divertida. ✔ Criteria ✔ Query-by-example Donde cada una de estas formas tiene particularidades que las diferencian tanto por la facilidad de uso, como por la orientación que se da a cada una de ellas. Una de la características principales que tiene cualquier aplicación es la posibilidad de Dynamic Finders poder obtener información variada en base a consultas realizadas a la base de datos, es Esta es una de las formas mas sencillas de por esta razón que en esta entrega veremos hacer consultas, algunas de sus como realizar estas consultas. características son las siguientes: ✔ Traducen automáticamente las propiedades de la clase, para Crear consultas convertirse en parte de la consulta. El ORM que posee Grails (GORM), soporta ✔ Funcionan de similar forma a los varias formas de poder realizar consultas, filtros entre las que destacan: ✔ Se limitan a realizar consultas a una ✔ Dynamic Finders sola clase ✔ HQL Algunos ejemplos de este tipo de consultas, los mostramos a continuación: Recupera la instancia de clase cuyo id es el 3 Expositor.get(3) Cuenta el numero de objetos de la clase Evento expositor.count() Cuenta la cantidad de expositores cuya país de origen es Bolivia Expositor.countByNacionalidad('Bolivia')
  • 2. Listado completo de todos los objetos de la clase Expositor.list() Listado de todos los objetos de la clase siguiendo el orden especificado Expositor.listOrderByNacionalidad() Devuelve el primer expositor cuyo pais de origen es Argentina y Bolivia Expositor.findByNacionalidad ('Bolivia')
  • 3. Devuelve el primer expositor cuyo apellido paterno sea Ayarde y cuyo país de origen es Bolivia Expositor.findWhere([ "paterno": "Ayarde", nacionalidad: "Bolivia"]) Otras opciones mas generales son: findAllBy, findAllWhere, getAll que tienen un funcionamiento análogo a los anteriores, con la diferencia que estos devuelven todas las instancias y no solo la primera instancia coincidente. Algunos ejemplos son mostrados a continuación: Devuelve todos los eventos en cuyo nombre aparezca la palabra informática Expositor.findAllByNombreLike("%an%") Devuelve todos los eventos en cuyo nombre aparezca la palabra Python y la fecha de inicio del evento tenga una antigüedad menor a un mes Evento.findAllByNombreLikeAndIniciaDateGreaterThan("%Python%", new Date()-30) Expositor.findAllByNacionalidad ('Bolivia') Expositor.findAllByNacionalidadAndPaterno ('Bolivia','Saavedra')
  • 4. el mismo efecto con la consulta Expositor.findAllWhere([ "paterno": "Saavedra", nacionalidad: "Bolivia"]) En caso de desear implementar una paginación a los resultados obtenidos, podríamos hacer uso de la siguiente consulta: Expositor.list(max: 10, offset: 20, sort: "nacionalidad", order "desc") Consultas HQL Si bien las consultas dinámicas son muy sencillas de utilizar y componer según los atributos de una clase, muchas veces en el desarrollo de aplicaciones precisamos contar con consultas mas complejas, para esto podemos hacer uso de HQL Básicamente HQL es una forma ampliada y detallada de hacer consultas, y que puede ir acompañando a: find, findAll y executeQuery, como se muestra en el siguiente ejemplo Expositor.findAll("from Expositor as e order by e.nacionalidad asc") Expositor.findAll("from Expositor as e where e.nombre = ? and e.nacionalidad = ? order by e.paterno asc", ["Kathleen", "Brasil"])
  • 5. El mismo resultado puede ser obtenido por la siguiente consulta, donde la diferencia radica en el manejo de parámetros utilizados en la consulta. Expositor.findAll("from Expositor as e where e.nombre = :nombre and e.nacionalidad = :nacionalidad order by e.paterno asc", [nacionalidad :"Brasil", nombre : "Kathleen"] Como en los casos anteriores, findAll permite recuperar un conjunto de instancias y no solo la primera coincidente. Expositor.findAll("From Expositor e", max: 10, offset: 20, sort: "nacionalidad", order "desc") executeQuery, presenta algunas diferencias a las anteriores consultas, por que no necesariamente debes recuperar todo el registro o la instancia de clase, tan solo puedes optar por recuperar el o los campos que sean necesarios, como en el ejemplo siguiente: Expositor.executeQuery("select e.nombre from Expositor e where e.nacionalidad = ?", "Bolivia") Consultas en base a Criterios Otro tipo de realizar consultas, es la creación de criterios, con la posibilidad de crear o incluir asociaciones. En los siguientes ejemplos mostramos como crear este tipo de consultas. Devuelve los eventos que se iniciaron en los últimos 30 días y en cuyo nombre del evento figure la palabra Python def hoy = new Date() def eventos = Evento.withCriteria { like("nombre","%Python%") between("inicia",hoy-30, hoy) maxResults(10)} Devuelve los eventos que se iniciaron en los últimos 30 días, además eventos asociados a conferencias realizadas en los últimos 7 días y en cuyo nombre figure la palabra Grails. def hoy = new Date() def resultado = Evento.withCriteria { conferencias { like("titulo","%Grails%") between("fecha", hoy-7, hoy) } between("inicia",hoy-30, hoy) maxResults(10)
  • 6. Devuelve los eventos donde cuyas conferencias se hayan realizado en los últimos 30 días. def e = Evento.createCriteria() def hoy = new Date() def resultado = e.list{ conferencias{ between("fecha",hoy-30, hoy) } } Referencias [1] http://www.grails.org [2] Getting Started with Grails [3] The Definitive Guide to Grails Autor Esteban Saavedra López Líder de la Comunidad ATIX (Oruro – Bolivia) Activista de Software Libre en Bolivia jesaavedra@opentelematics.org http://jesaavedra.opentelematics.org