grails

Download Grails

If you can't read please download the document

Upload: lucas-aquiles

Post on 23-Jun-2015

900 views

Category:

Technology


0 download

TRANSCRIPT

  • 1. Introduo ao GrailsConceitos bsicos do Grails Framework e ZK @Lucas_Aquiles@lucas_aquiles

2. RoteiroO que Grails?Primeiro ProjetoO M do MVCPersistncia GORMRelacionamentos@lucas_aquiles 3. O que GrailsProblemas comunsQuando voc comea um novo projeto voc tem que configurar tudo:Construir todos os componentesConfigurar arquivos xmlMapear com o ORM manualmente dificil escrever uma view limpaTag libs eram sempre dolorosas@lucas_aquiles 4. E quando algum problemaaparecia... @lucas_aquiles 5. O que Grails = + @lucas_aquiles 6. O que GrailsFramework baseada no MVCSegue boas praticas popularizadas pelo RailsCoCDRYConstrudo sobre gigantesS p r i n g : IoC, DI, Spring MVC, Spring WebFlowH i b e r n a t e :ORM @lucas_aquiles 7. O que GrailsInstalao e ConfiguraoDownload da ultima verso do grailsgrails.org/DownloadsDescompacte em algum lugarCrie o GRAILS_HOMEAdicione $GRAILS_HOME/bin no PATHPronto! @lucas_aquiles 8. O que GrailsCad os arquivos de config?Cad meus DAOs? E os mapeamentos?Sem banco pra configurar?Sem servlet container ouApp server pra instalar?@lucas_aquiles 9. O que Grails DataSource.groovy Config.groovy Bootstrap.groovy URLMapping.groovyweb.xml @lucas_aquiles 10. O M do MVCToda entidade persistente fica aquiSo mapeadas de maneira transparenteModel so configurados como POGOsCada classe de domnio corresponde a uma tabela no banco de dados relacionalcomando: grails create-domain-class P erson @lucas_aquiles 11. O M do MVC uma classe Groovy normalConstraintsValida a entrada dos camposVoc pode criar sua prpria constraintsblank, creditcard, email, url, nullable, unique@lucas_aquiles 12. Persistncia - GORMUtiliza o Hibernate por baixo dos panosPara cada classe de domnio injetado os mtodos do GORMproduto.save(), P roduto.list(), P roduto.get(id)produto.count(), produto.delete(), etc...Buscadores dinmicosP roduto.findB yP reco(2.0) @lucas_aquiles 13. Persistncia - GORMBuscadores dinmicosFindBy*, FindAllBy*FindWhere*, findAllWhere*@lucas_aquiles 14. Persistncia - GORMHQL Hibernate Query LanguageProduto.find(from Produto where preco = :precoand nome like :nome, [preco:2.0, nome:nome doproduto])Parmetros:max, sort, order @lucas_aquiles 15. Persistncia - GORMComparadores LikeProduto.findByNomeLike(%test) LessThanProduto.findByPrecoLessThan(2.0) IsNotNullProduto.findByCategoriaIsNotNull()NotEqual @lucas_aquiles 16. Persistncia - GORMSuporte a criteria APIdef criteria = createCriteria();def resultado = criteria.list(){ categoria{eq(2)}order nome}@lucas_aquiles 17. RelacionamentosPermite 4 tipos de relacionamentosOne-to-one, one-to-many, many-to-many, many-to- oneOneToManyPlayer hasOne TeamHasManyTeam hasMany Players Mtodos dinmicos:@lucas_aquiles 18. RelacionamentosEm relacionamentos manyT oM any um dos lados da relao deve definir o belongsT oMappingI nsertable Inserida dinamicamente quando uma instancia for salvaC ascade Configura aes em cascada entre a associaoU pdatable @lucas_aquiles 19. O C do MVCToda regra de negcio chamada a partir daquiA c t i o n s : so clousures que vo receberrequisies e fazer alguma coisaH ttpServletR equest e H ttpServletR esponsep a r a m s : vriavel,map, injetadodinamicamente em todo controller que contmos parametros da requisio@lucas_aquiles 20. O C do MVCR e n d e r : renderiza uma respostaUma view, um texto, um templateParmetrosviewtemplatemodeltextvar@lucas_aquiles 21. O C do MVCR e d i r e c t : redireciona para algum lugarParmetros: action controller URI params@lucas_aquiles 22. O C do MVCA varivel scaffoldingPermite criar a estrutura CRUD dinmica para uma classe de domniodef scaffolding = P roduto*Scaffolding no a soluo final! @lucas_aquiles 23. ServiceCentraliza a regra de negcioCompartilha a mesma regra de negcio com a classe de domnio injetado automaticamente no controller pelo SpringC omando: grails create-service ServiceN ame @lucas_aquiles 24. ServiceTransactionsEssencial para manter a integridade do banco de dados seguindo os conceitos de ACID:AtomicidadeConsistnciaIsolaoDurabilidade@lucas_aquiles 25. O V do MVCComando grails-generate-views D omainN ameArquivos .gspBaseados em taglibsEvitam misturar codigo de programao com cdigo de marcaoSemelhante ao JSP @lucas_aquiles 26. O V do MVCLoops EachParmetros in: lista que ser iterada var: varivel temporria, padro it If/elseParmetros test: recebe a condio a ser testada Set@lucas_aquiles 27. ScaffoldingComando: grails generate-all D omainN ameCria toda o controller e views com a estrutura deCRUDtimo para prototipaoScaffolding dinmico: injetado no controller, recebe como valor a classe de domnio@lucas_aquiles 28. TDD Test Driven DevelopmentIntegrado com o jUnitToda classe de teste extende GroovyTestCasePermite fazer testes:UnitriosDe integraoFuncionaisSemelhante aos testes em Java@lucas_aquiles 29. TDDUnitTest != IntegrationTestTestes unitrios verificam um objeto isolado, no hnecessidade de conexo com banco, web sercceou outro compomente.Testes de integrao integrar um objeto a sertestado com componentes externos @lucas_aquiles 30. TDDmockDomain Herdado de GrailsUnitTestCase Injeta na classe de domnio que a classe deve ter Validate(), save(), delete()@lucas_aquiles 31. TDDTestes em ControllersmockP arams: funciona como os params do controllercontroller: identifica um controllerR edirectA rgs: possui os parametros: A ction, controller, modelM ockR equest: simula uma instancia para HttpServletRequestM ockSession: simula uma HttpSession@lucas_aquiles 32. Pluginsgrails install-plugin [plugin-name]grails install-plugin [local-do-plugin]grails create-plugin @lucas_aquiles 33. Duvidas? @lucas_aquiles