@lucas_aquiles
Groovy e Grails
RoteiroGroovy
1. O que é Groovy?2. GroovyShell / Groovy Console3. O mundo de objetos do Groovy
a. sobrescrevendo operadoresb. Mixings
4. Sintaxe nativaa. Classes, atributosb. List, Maps, Rangesc. GStringsd. Clousures
5. Elvis Operator
Grails1. O framework2. Estrutura de um projeto Grails3. O Model
a. constraintsi. validatorii. valiando um objeto
b. relacionamentosi. hasManyii. belongsToiii. hasOne
c. static mappingd. GORM
i. findersii. criteria
4. o Controllera. scaffoldingb. actions, params, renders, redirect
5. Servicesa. integrando um service a um controller
6. Viewsa. gsp taglibb. templates
Groovy
O que é groovy?
● linguagem dinâmica que roda na VM do Java
● totalmente OO
● compatibilidade com as libs Java
● recursos do java5 são nativos○ annotatios, collections, enum static import
Groovy
é a alegria do desenvolvedor java!
Groovy
Quem programa em java é um dev Groovy?
Groovy
um código java
Groovy
um código groovy
Groovy
um código groovy do jeito groovy
Groovy
Console interativoGroovy shell Groovy Console
Groovy
Tudo é um objeto
3.times{ println "opa!"
}
Groovy
● Sobrescrevendo operadores○ plus○ minus
● Mixing○
Groovy
Sintaxe:● Classes:
○ tipagem dinâmica
○ get e set são injetados dinamicamente
○ return e ; em métodos é opcional
Groovy
● Lists○ def lista = [1,2,3]
● Maps○ def map = ['key':'value']
● Ranges○ def rang = 1...3
Groovy
Sintaxe● Datas
○ def hoje = new Date()
● GStrings○ permite interploar string s entre aspas duplas
■ "${var}"
● Closure○ são blocos de código que podem ser executados e
passados como parametros em funções
Groovy
Sintaxe
● Closure
○ possui uma variável interna chamada "it"
def c = { println it }
Groovy
Sintaxe
● Elvis Operator○ "?." colocado antes da chamada de um atributo da
classe
Grails
O Framework
Grails
O framework● CoC
● Baseado no projeto Rails e Django
● Fácil integração com bibliotecas java
● Encapsula frameworks como: spring ioc, hibernate, sitemash, scaffolding
Grails
E quando o erro vinha no java ....
Grails
Instalação e configuração
○ define $GRAILS_HOME/bin na variável de ambiente
○ Run! grails run-app
Grails
O primeiro projeto
DataSource.groovyBuildConfig.groovyConfig.groovyURLMapping.groovy
web.xml
Grails
O primeiro projeto
DataSource.groovyBuildConfig.groovyConfig.groovyURLMapping.groovy
web.xml
Cadê meus DAOS?meus xml?
Grails
O Model
○ representa uma classe persistente no projeto grails○ são POGOS○ não é necessário mapear com annotations ou
arquivos xml
grails create-domain-class br.com.infowaypi.MinhaClasse
Grails
O Model○ constraints
■ valida a entrada de dados de um atributo da classe
■ nullable, blank, size, max, min■ validator: recebe uma validação específica
Grails
O Model○ validando objetos
● hasErrors() - verifica se existe algum erro de validação na classe seguido do validate() e do save()
● validate() - verifica as validações das constraints
Grails
O Model○ relacionamentos
■ hasManyteam hasMany players
■ belongsTo
player belongsTo team
■ hasOne
player hasOne teamem relacionamentos many to many é necessário que um dos lados deve assumir o belongsTo
Grails
O Model○ métodos injetados dinamicamente
● list()
● get(id)
● findAll()
● save()
● delete()
Grails
O Model○ finders dinâmicos
Grails
O Model● HQL: Hibernate Query Language
○ produto.findAll("from Produto where preco < :preco", [preco:1.99])
● max, min, sort, order
Grails
O Model● Comparadores
○ Like
■ produto.findAllByNomeLike('%vegan')
○ LessThan
■ produto.findAllByPrecoLessThan(1.99)
○ IsNotNull
■ produto.findAllByCategoriaIsNotNull()
○ NotEqual
■ produto.findAllByDescricaoNotEqual('carne')
Grails
O Model● Criteria
○ NomeDaClass.createCriteria()
def resultado = criteria.list(){ categoria{eq(2)} }
Grails
O Controller○ Responsável por receber uma requisição e executar
uma action
○ actions: são closures que vão receber requisições e executar uma ação
○ params: variável do tipo map que carrega informações com os parametros da requisição
Grails
O Controller○ render: responsável por enviar um tipo de resposta da requisição,
ex: uma view, um template, um texto
■ view, template, model, text, var
○ redirect: redireciona a requisição de uma action■ action, cotroller, uri, params
Grails
O Controller○ scaffolding: permite montar uma estrutura de CRUD para uma
classe de domínio
■ def scaffold = Produto;
grails create-controller
Grails
Services
○ services permitem centralizar uma lógica de negócio comum na aplição
○ um service é injetado dinamicamente em um controller seguindo a convenção: nameService
grails create-service serviceName
Grails
A View● arquivos *.gsp● baseado em taglibs semelhante as do jsp
■ evita misturar código de programação com marcação
■ <%= %>
Grails
A View● loops
○ <g:each in="${collectionName}" var="item"> </g:each>
○ if / else■ <g:if test="${item > 2}"> </g:if><g:else></g:else>
Grails
A View● templates
templates por padrão começam com _ (underscore) antes do nome do arquivo
ex: _templateName.gsp
<g:render template="templateName" var="${collection}" />
Top Related