Groovy e Grails
  @lucas_aquiles
Roteiro
Groovy                              Grails
1.   O que é Groovy?                1.   O framework
2.   GroovyShell / Groovy Console   2.   Estrutura de um projeto Grails
3.   O mundo de objetos do Groovy   3.   O Model
     a. sobrescrevendo operadores         a. constraints
     b. Mixings                                 i. validator
4.   Sintaxe nativa                            ii. valiando um objeto
     a. Classes, atributos                b. relacionamentos
     b. List, Maps, Ranges                      i. hasMany
      c. GStrings                              ii. belongsTo
     d. Clousures                             iii. hasOne
5.   Elvis Operator                       c. static mapping
                                          d. GORM
                                                i. finders
                                               ii. criteria
                                    4.   o Controller
                                          a. scaffolding
                                          b. actions, params, renders, redirect
                                    5.   Services
                                          a. integrando um service a um controller
                                    6.   Views
                                          a. gsp taglib
                                          b. 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 interativo
  Groovy 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.groovy
BuildConfig.groovy
Config.groovy
URLMapping.groovy




                 web.xml
Grails
Cadê meus DAOS?
 O primeiro projeto
meus xml?

 DataSource.groovy
 BuildConfig.groovy
 Config.groovy
 URLMapping.groovy




                  web.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
      ■ hasMany
                team hasMany players
        ■ belongsTo

                player belongsTo team
        ■ hasOne
                player hasOne team
em 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}" />

Mais conteúdo relacionado

ODP
Groovy grails
PDF
Curso de Grails
PPT
Grails, o que isso quer dizer?
ODP
Grails: O Java em Alta Produtividade
PDF
Curso de Groovy
PPTX
Introdução a Grails: Um framework veloz e poderoso
PPT
Rapida apresentacao sobre o Grails
ODP
Produtividade na web_com_groovy_e_grails_pt2
Groovy grails
Curso de Grails
Grails, o que isso quer dizer?
Grails: O Java em Alta Produtividade
Curso de Groovy
Introdução a Grails: Um framework veloz e poderoso
Rapida apresentacao sobre o Grails
Produtividade na web_com_groovy_e_grails_pt2

Mais procurados (20)

PDF
Grails parte 1 - introdução
PPTX
Grails
PDF
Minicurso groovy grails
PDF
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
PDF
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
PDF
Mean Stack
PDF
Curso de ReactJS
PDF
Começando com Zend Framework 2
PDF
Ruby On Rails Regis
PDF
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
PDF
Esta começando a programar para a web? Então começe com Rails
PPTX
Maven em 10 minutos
PDF
Palestra Desenvolvimento Ágil para Web com ROR UVA
PDF
PDF
Desenvolvendo com Dojo Toolkit
PPTX
Testes com javascript
PDF
Precisamos falar sobre Gradle
PDF
Integração Contínua com Cruise Control e phpUnderControl
PDF
Integração Contínua com CruiseControl e phpUnderControl
PPTX
Jclouds jug vale
Grails parte 1 - introdução
Grails
Minicurso groovy grails
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Mean Stack
Curso de ReactJS
Começando com Zend Framework 2
Ruby On Rails Regis
ZF2 básico : Desenvolvendo um Blog com o Zend Framework 2
Esta começando a programar para a web? Então começe com Rails
Maven em 10 minutos
Palestra Desenvolvimento Ágil para Web com ROR UVA
Desenvolvendo com Dojo Toolkit
Testes com javascript
Precisamos falar sobre Gradle
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
Jclouds jug vale
Anúncio

Destaque (7)

PDF
PDF
Grails 101
PDF
Groovy & grails
PDF
JavaEE nos trilhos
PDF
Produtividade em Java com Grails
PPTX
Desenvolvimento Ágil com Grails.
PDF
Grails Simple Login
Grails 101
Groovy & grails
JavaEE nos trilhos
Produtividade em Java com Grails
Desenvolvimento Ágil com Grails.
Grails Simple Login
Anúncio

Semelhante a Oficina groovy grails - infoway (20)

ODP
ODP
Overview de Grails: O Java em alta produtividade
PDF
Grails from scratch
PPTX
Groovy e Grails 2
PPTX
Grails - Destaques (para quem já sabe Java)
PPTX
Groovy Power
PDF
Desenvolvimento web com groovy e grails.
PDF
Ecosistema spring a_plataforma_enterprise_jav
PPT
Utilize Groovy nos seus futuros projetos
PDF
Flex + Grails @ Flexmania2010
PPT
Groovy: graxa nas engrenagens de Java
PDF
Palestra - Symfony Framework MVC PHP 5
ODP
PDF
Grails com Nexus e Codenarc
PDF
Minicurso Ruby on Rails
PDF
Apresentando Groovy e Grails
PDF
Caelum ruby-on-rails-rr71
ODP
Grails latinoware
PPTX
XML Free Programming - Brazil
PDF
Ruby on Rails: Produtividade e diversão na web
Overview de Grails: O Java em alta produtividade
Grails from scratch
Groovy e Grails 2
Grails - Destaques (para quem já sabe Java)
Groovy Power
Desenvolvimento web com groovy e grails.
Ecosistema spring a_plataforma_enterprise_jav
Utilize Groovy nos seus futuros projetos
Flex + Grails @ Flexmania2010
Groovy: graxa nas engrenagens de Java
Palestra - Symfony Framework MVC PHP 5
Grails com Nexus e Codenarc
Minicurso Ruby on Rails
Apresentando Groovy e Grails
Caelum ruby-on-rails-rr71
Grails latinoware
XML Free Programming - Brazil
Ruby on Rails: Produtividade e diversão na web

Mais de Lucas Aquiles (11)

PDF
Open talk micronaut
PPTX
Best practices in pair programming
PPTX
Pocket Talk - Onde vivem os vegans?
PPTX
Pocket Talk - Mob programming
PPTX
google maps api - v1
PPTX
Criando app mobile com Google Android - Software Freedom Day 2015
PDF
Phonegap
PDF
Minicurso javascript
ODP
PPT
Desenvolvimento de aplicações para a plataforma google android
ODP
Orm android
Open talk micronaut
Best practices in pair programming
Pocket Talk - Onde vivem os vegans?
Pocket Talk - Mob programming
google maps api - v1
Criando app mobile com Google Android - Software Freedom Day 2015
Phonegap
Minicurso javascript
Desenvolvimento de aplicações para a plataforma google android
Orm android

Último (20)

PDF
Gestão contínua de exposição a ameaças petrobras
PPTX
Panorama da aviação civil brasileira ANAC
PDF
wp-sn-advanced-high-availability-architecture (pt-br).pdf
PPTX
Formação aaaaaaaaadsdsfg er rsgrsgesf efsfsefsf e LEEI.pptx
PDF
POO - Aula 05 - Herança - Generalização e Especialização.pdf
PPTX
AULA 1.pptx GESTÃO DE OPERAÇÕES INDUSTRIAIS
PPTX
RCSOFTdfsdfrvadfvdfvargfvevevrervevqer.pptx
PPT
Padrões de Beleza I - Estética Corporal e Saúde
PPTX
Google saiba mais sobre o google e suas funcionalidades
PDF
pdfcoffee.com_metalografia-25-pdf-free.pdf
PDF
POO - Aula 05 - Herança - Generalização e Especialização.pdf
DOCX
20250828_Perfis Profissionais em ServiceNow Um Guia Detalhado.docx
PDF
Arquitetura de Software slides sommerville
PPTX
Modelo para Qualificação de Mestrado - Tecnologia da Informação
PPT
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
PPTX
Legislação aeronautica na aviação civil Brasileira
DOCX
Laboratório de cyber security, apresentação simples.
PDF
Apostila Power Automate Impressionador.pdf
PDF
T-pico 1.pdfnsjabdkaksbbsuendnijsbshajanzk
PDF
POO - Aula 03 - Membros Estáticos e Construtores.pdf
Gestão contínua de exposição a ameaças petrobras
Panorama da aviação civil brasileira ANAC
wp-sn-advanced-high-availability-architecture (pt-br).pdf
Formação aaaaaaaaadsdsfg er rsgrsgesf efsfsefsf e LEEI.pptx
POO - Aula 05 - Herança - Generalização e Especialização.pdf
AULA 1.pptx GESTÃO DE OPERAÇÕES INDUSTRIAIS
RCSOFTdfsdfrvadfvdfvargfvevevrervevqer.pptx
Padrões de Beleza I - Estética Corporal e Saúde
Google saiba mais sobre o google e suas funcionalidades
pdfcoffee.com_metalografia-25-pdf-free.pdf
POO - Aula 05 - Herança - Generalização e Especialização.pdf
20250828_Perfis Profissionais em ServiceNow Um Guia Detalhado.docx
Arquitetura de Software slides sommerville
Modelo para Qualificação de Mestrado - Tecnologia da Informação
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
Legislação aeronautica na aviação civil Brasileira
Laboratório de cyber security, apresentação simples.
Apostila Power Automate Impressionador.pdf
T-pico 1.pdfnsjabdkaksbbsuendnijsbshajanzk
POO - Aula 03 - Membros Estáticos e Construtores.pdf

Oficina groovy grails - infoway

  • 1. Groovy e Grails @lucas_aquiles
  • 2. Roteiro Groovy Grails 1. O que é Groovy? 1. O framework 2. GroovyShell / Groovy Console 2. Estrutura de um projeto Grails 3. O mundo de objetos do Groovy 3. O Model a. sobrescrevendo operadores a. constraints b. Mixings i. validator 4. Sintaxe nativa ii. valiando um objeto a. Classes, atributos b. relacionamentos b. List, Maps, Ranges i. hasMany c. GStrings ii. belongsTo d. Clousures iii. hasOne 5. Elvis Operator c. static mapping d. GORM i. finders ii. criteria 4. o Controller a. scaffolding b. actions, params, renders, redirect 5. Services a. integrando um service a um controller 6. Views a. gsp taglib b. templates
  • 3. 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
  • 4. Groovy é a alegria do desenvolvedor java!
  • 5. Groovy Quem programa em java é um dev Groovy?
  • 8. Groovy um código groovy do jeito groovy
  • 9. Groovy Console interativo Groovy shell Groovy Console
  • 10. Groovy Tudo é um objeto 3.times{ println "opa!" }
  • 11. Groovy ● Sobrescrevendo operadores ○ plus ○ minus ● Mixing ○
  • 12. Groovy Sintaxe: ● Classes: ○ tipagem dinâmica ○ get e set são injetados dinamicamente ○ return e ; em métodos é opcional
  • 13. Groovy ● Lists ○ def lista = [1,2,3] ● Maps ○ def map = ['key':'value'] ● Ranges ○ def rang = 1...3
  • 14. 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
  • 15. Groovy Sintaxe ● Closure ○ possui uma variável interna chamada "it" def c = { println it }
  • 16. Groovy Sintaxe ● Elvis Operator ○ "?." colocado antes da chamada de um atributo da classe
  • 18. 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
  • 19. Grails E quando o erro vinha no java ....
  • 20. Grails Instalação e configuração ○ define $GRAILS_HOME/bin na variável de ambiente ○ Run! grails run-app
  • 22. Grails Cadê meus DAOS? O primeiro projeto meus xml? DataSource.groovy BuildConfig.groovy Config.groovy URLMapping.groovy web.xml
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. Grails O Model ○ relacionamentos ■ hasMany team hasMany players ■ belongsTo player belongsTo team ■ hasOne player hasOne team em relacionamentos many to many é necessário que um dos lados deve assumir o belongsTo
  • 27. Grails O Model ○ métodos injetados dinamicamente ● list() ● get(id) ● findAll() ● save() ● delete()
  • 28. Grails O Model ○ finders dinâmicos
  • 29. Grails O Model ● HQL: Hibernate Query Language ○ produto.findAll("from Produto where preco < :preco", [preco:1.99]) ● max, min, sort, order
  • 30. Grails O Model ● Comparadores ○ Like ■ produto.findAllByNomeLike('%vegan') ○ LessThan ■ produto.findAllByPrecoLessThan(1.99) ○ IsNotNull ■ produto.findAllByCategoriaIsNotNull() ○ NotEqual ■ produto.findAllByDescricaoNotEqual('carne')
  • 31. Grails O Model ● Criteria ○ NomeDaClass.createCriteria() def resultado = criteria.list(){ categoria{eq(2)} }
  • 32. 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
  • 33. 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
  • 34. Grails O Controller ○ scaffolding: permite montar uma estrutura de CRUD para uma classe de domínio ■ def scaffold = Produto; grails create-controller
  • 35. 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
  • 36. Grails A View ● arquivos *.gsp ● baseado em taglibs semelhante as do jsp ■ evita misturar código de programação com marcação ■ <%= %>
  • 37. 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>
  • 38. 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}" />