COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy !...
-
Upload
doannguyet -
Category
Documents
-
view
234 -
download
1
Transcript of COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy !...
![Page 1: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/1.jpg)
COURS GRAILS Novembre 2013
![Page 2: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/2.jpg)
Introduction – Programme – Planning – Rappels
Introduction 2
![Page 3: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/3.jpg)
Introduction ¤ Grégory Galli
¤ Tokidev S.A.S. n Consulting, Bureau d’étude,
développement informatique.
n www.tokidev.fr
3
![Page 4: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/4.jpg)
Avant de commencer ¤ Posez des questions !
n Si un point ne vous semble pas clair, n’hésitez pas à me poser des questions.
¤ Me contacter en dehors du cours n Si vous avez besoin d’aide en dehors des horaires de cours,
contactez moi par e-mail : [email protected] n Pour le cours ou vos projets.
4
![Page 5: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/5.jpg)
Avant de commencer
¤ Google est votre ami ! n Si vous rencontrez un problème, ayez le réflexe de chercher
sur internet… la réponse y sera la plupart du temps !
¤ Débug n Développement web : Inspecteur (Chrome/Firebug) n Développement Grails : Débug pas à pas comme en Java
5
![Page 6: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/6.jpg)
Planning
¤ Lundi 18 Novembre n Cours : 8h30 – 11h30 n TD : 13h – 16h
¤ Mercredi 20 Novembre n Cours : 8h30 – 11h30 n TD : 13h – 16h
6
¤ Mardi 19 Novembre n Cours : 8h30 – 11h30 n TD : 13h – 16h
![Page 7: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/7.jpg)
Rappel : MVC
Modèle
Vue
Contrôleur
7
![Page 8: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/8.jpg)
Rappel : Web Services
¤ Programme informatique permettant la communication et l’échange de données entre applications.
¤ Deux principaux types de Web Services :
n SOAP (WSDL / UDDI) n REST
8
![Page 9: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/9.jpg)
Rappel : Serveur d’application ¤ Machine ou service pour l’hébergement d’applications à
exécuter côté client ¤ Quelques exemples :
n JBOSS n Apache Tomcat n Glassfish n Websphere n …
9
![Page 10: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/10.jpg)
Présentation Générale 10
![Page 11: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/11.jpg)
Grails, c’est quoi ?
¤ Né en 2005, initié par Graeme Rocher ¤ Framework open source de développement agile ¤ Basé sur le langage Groovy ¤ Groovy on Rails (agile) > Grails ¤ Construit sur un modèle MVC
11
![Page 12: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/12.jpg)
Groovy, c’est quoi ?
¤ Langage OO destiné à la plateforme Java ¤ Alternative inspirée de Python, Ruby et Smalltalk ¤ Intégré et compatible avec la JVM
n On peux utiliser des librairies Java n Être utilisé directement dans des classes Java
12
![Page 13: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/13.jpg)
Philosophie : les cinq fondamentaux
¤ DRY : Don’t Repeat Yourself ¤ Développement rapide
n Prototypage n Scaffolding
n Gros projets ¤ Architecture orientée modèle ¤ Convention plutôt que configuration ¤ Exploite la puissance de la JVM : compilation en bytecode Java
13
![Page 14: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/14.jpg)
Avantages ¤ Web MVC : Facile à utiliser ¤ GSP : Langage de template simple et complet ¤ Serveur embarqué ¤ GORM : Modélisation et accès aux données ¤ Base de donnée simulée (développement) ¤ Internationalisation ¤ Tests & Tests unitaires ¤ Documentation très riche
14
![Page 15: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/15.jpg)
Créer un projet : 3 étapes
¤ Création des classes de domaine
¤ Scaffold
¤ Run
15
![Page 16: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/16.jpg)
Plugins
¤ Tomcat ¤ Hibernate ¤ Très nombreux ¤ Accélèrent grandement le développement ¤ Ne pas en abuser ¤ Twitter Bootstrap
16
![Page 17: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/17.jpg)
Hibernate – GORM – Structure d’un projet
Présentation – Composants principaux 17
![Page 18: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/18.jpg)
Hibernate
¤ Framework open source de persistance ¤ Adaptable à tous les serveurs d’application / web ¤ Remplacement d’une DAL classique
n Appel de méthodes objets de haut niveau
¤ Pluggable sur n’importe quel type de BDD ¤ Utilisé dans le cadre du développement Grails via GORM
18
![Page 19: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/19.jpg)
GORM
¤ Grails Object Relational Mapping ¤ Illusion de base de donnée
orientée objet ¤ Correspondance monde objet /
monde relationnel n Appel de méthodes objets de haut
niveau
19
def book = Book.findByTitle("Groovy in Action") book .addToAuthors(name:"Dierk Koenig") .addToAuthors(name:"Guillaume LaForge") .save()
grails create-domain-class org.bookstore.Book
![Page 20: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/20.jpg)
GORM vs DAL Classique
¤ Avantages
n Réduction de la quantité de code n Binding poussé
n Pas de SQL pour des requêtes simples n On appelle directement les objets que l’on a créé
n Méthodes dynamiques
20
![Page 21: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/21.jpg)
GORM vs DAL Classique 21
¤ Désavantages
n On ne sait pas ce qui se passe derrière n On rajoute une couche à Performances n Connaissances requises pour une utilisation efficace n Sans compréhension du concept et des mécaniques, l’échec est assuré
![Page 22: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/22.jpg)
Composants d’un projet Grails ¤ Config ¤ Domain : Définition du modèle ¤ Controller : Contrôleurs web ¤ i18n : Internationalisation ¤ Service : Couche de service ¤ View : Groovy Server Pages ¤ SRC : Autre sources (Java / Groovy) ¤ Test : Tests unitaires et d’intégration ¤ Web-app : ressources web
22
![Page 23: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/23.jpg)
Config
Présentation – Eléments principaux 23
![Page 24: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/24.jpg)
Config 24
¤ Config : Configuration du projet ¤ DataSource
n Liens base de données n Configuration
¤ BuildConfig ¤ UrlMapping
n Règles de redirections n REGEXP
¤ ApplicationResources n Module gestion de ressource (Grails 2.0)
![Page 25: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/25.jpg)
Ressources 25
¤ Plugin de base inclus depuis la version 2.0 de Grails
¤ Gestion des ressources web n Javascript n CSS
¤ Optimisation n Compression n Concaténation
![Page 26: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/26.jpg)
DataSources 26
¤ Configurations base de données n Différentiation Production / Test /
Production n dbCreate : Paramètre important qui
définit le comportement au lancement du projet
n create n create-drop n update
![Page 27: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/27.jpg)
BuildConfig 27
¤ Configurations des dépendances ¤ Port de déploiement ¤ Configuration des plugins
n runtime n build n compile n test n provided
![Page 28: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/28.jpg)
UrlMapping 28
¤ Configuration des redirections n Expressions régulières n Vers des controllers / actions n Vers des vues
![Page 29: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/29.jpg)
UrlMapping 29
¤ Définitions complexes et contraintes : n $ : permets de pré-nommer des
variables n Expressions régulières pour des
besoins particuliers n Définitions bi-directionnelles
![Page 30: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/30.jpg)
Model – View – Controller – Services – Gettext
Présentation – Eléments principaux 30
![Page 31: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/31.jpg)
Modèle 31
¤ Attributs de la classe ¤ hasMany / hasOne ¤ constraints ¤ mapping ¤ mappedBy ¤ Constructeurs ¤ Méthodes de classe
![Page 32: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/32.jpg)
Controlleur 32
¤ Lien vers les vues ¤ Traitement léger ¤ beforeInterceptor ¤ allowedMethods ¤ Retour vers les vues
n Render n Redirect n [] n XML / JSON Converters
![Page 33: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/33.jpg)
Controlleur 33
¤ Comportement par défaut n Renvoi à la vue correspondante n Sinon, méthodes à disposition
n Redirect n Render n []
¤ Exemple: n Controllers /
FrontController.groovy n Méthode index
n Views/Front/index.gsp
![Page 34: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/34.jpg)
i18n 34
¤ Internationalisation ¤ Injection via gettext ¤ 17 langues par défaut ¤ ${message (code:’’lb.hello’’)}
¤ <g:message code=’’lb.hello’’/> ¤ <g:message code="my.localized.content" args="$
{ ['Juan', 'lunes'] }" /> n my.localized.content=Hola, Me llamo {0}. Hoy es {1}.
n render : Hola, Me llamo Juan. Hoy es lunes.
![Page 35: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/35.jpg)
i18n 35
¤ Cas complexes n Injection de message dans un message
n message(code: 'default.not.found.message', args: [message(code: 'congres.label', default: 'Congres'), id])
n code: 'default.not.found.message' n args: [message(code: 'congres.label', default: 'Congres'), id]
![Page 36: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/36.jpg)
Service 36
¤ Traitements lourds n Injection dans les controlleurs
¤ Threading possible n Attention au contexte Hibernate
¤ Langages Java / Groovy ¤ Eviter les manipulation de BDD
autant que possible
![Page 37: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/37.jpg)
Service 37
¤ Conservation du contexte de persistance n Possible mais à éviter n Si on ne peux faire autrement
![Page 38: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/38.jpg)
Vues 38
¤ Index n <meta name="layout" content="main"/>
¤ ${ … } ¤ <% … %>
n
¤ <g:xxx /> ¤ Resources accessible (grailsApplication)
![Page 39: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/39.jpg)
Vues - Layout 39
¤ Default title ¤ <g:layoutHead />
¤ <r:layoutResources />
¤ <g:layoutBody />
¤ <r:layoutResources />
![Page 40: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/40.jpg)
Web app 40
¤ Web-app /css /images /js /meta-inf /web-inf
![Page 41: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/41.jpg)
Grails 2.0.0 41
¤ Version majeure riche en fonctionnalités n Intégration de base du plugin Resources n Amélioration des test unitaires et d’intégration n HTML5 dans le scaffolding n Nouvelle console
¤ Version à utiliser : 2.2.4
![Page 42: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/42.jpg)
Préparation de l’environnement de travail
Un peu de pratique ! 42
![Page 43: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/43.jpg)
Modélisation 43
¤ Création du modèle n Accès à tous les types de base (Int, String, Boolean) n Création d’une relation 1..n
n static hasMany = [nomDeLaCollection:Object]
n Création d’une relation 1..1 : Comme un attribut quelconque n Utilisation possible de la propriété hasOne
![Page 44: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/44.jpg)
Modélisation 44
¤ Création du modèle
n Définition des attributs n Relations n Contraintes
![Page 45: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/45.jpg)
Modélisation 45
¤ Possibilité d’héritage n Eviter si possible à Gourmand en ressources n Récupération des attributs du parent
![Page 46: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/46.jpg)
Modélisation – Relations 46
¤ Très important n Définition du « responsable » d’une
association via la propriété « belongsTo »
n Je crée un objet « Roue » qui belongsTo « Vehicule », si j’efface le véhicule, ma roue sera effacé elle aussi car une relation forte est définie entre les deux objets
![Page 47: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/47.jpg)
Modélisation – Relations 47
¤ Si je définie deux classes Roue et Véhicule: n Roue belongsTo Vehicule
n Dépendance forte n Une roue ne peux pas être créée seule n Nécessité de créer un véhicule et d’y
attacher la roue
![Page 48: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/48.jpg)
Modélisation - Contraintes 48
¤ Propriété constraints n Permets de définir les contraintes sur les propriétés de nos classes
n unique n blank n nullable n size n url n mail n max, maxSize …
n http://grails.org/doc/latest/ref/Constraints/Usage.html
![Page 49: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/49.jpg)
Modélisation - Mapping 49
¤ Propriété mapping n Permets de personnaliser les noms des champs générés par GORM
dans la base de donnée
n Définir si un attribut dois être caché par défaut
n static mapping = { table bool cache usage: 'read-only', include: 'non-lazy' }
![Page 50: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/50.jpg)
Modélisation - Mapping 50
¤ Propriété mapping n Permets de personnaliser les propriété de jointure si on ne veux pas
garder les propriété par défaut
![Page 51: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/51.jpg)
Modélisation - Mapping 51
¤ Propriété mapping n Lazy loading
n Par défaut si un objet possède une référence sur un autre objet, ce dernier ne sera pas chargé en mémoire, si on désire que le comportement de base soit différent, il faut l’expliciter.
n static mapping = { books lazy:false
}
![Page 52: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/52.jpg)
Modélisation - Mapping 52
¤ Propriété mapping n Les comportements comme les transactions et les cascades SQL peuvent être définies
dans ce bloc n static mapping = {
book lazy: false, cascade:"all,delete-orphan“ }
n Si l’on désire que la modification d’un objet parent affecte l’objet fils, on dois définir le fils comme appartenant au parent (relation forte), si on ne désire pas définir d’appartenance, il faut alors expliciter les comportements
n Sinon : Faisable à la main
![Page 53: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/53.jpg)
Modélisation - Mapping 53
¤ Propriété mapping
n De très nombreuses adaptations sont possible, lire la documentation si vous êtes dans un cas particulier
n http://grails.org/doc/latest/guide/GORM.html
![Page 54: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/54.jpg)
Manipulation des objets 54
¤ Requêtes sur une base de donnée via GORM n Récupération par ID : Object.get(id) n Récupération de tous les objets :
n Object.list() n Object.getAll()
n Requête sur propriété : n Object.findByName(‘’lenom’’) n Object.findAllByName(‘’lenom’’)
![Page 55: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/55.jpg)
Manipulation des objets 55
![Page 56: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/56.jpg)
Manipulation des objets 56
![Page 57: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/57.jpg)
Manipulation des objets 57
¤ Sauvegarde n objectInstance.save()
n Options : n Flush : quand défini à « true », persiste l’objet immédiatement n Validate : valide la persistance de l’objet n Insert : force hibernate à utiliser un INSERT(true) ou un UPDATE (false n failOnError : si la persistance echoue, une exception sera levée
(souvent utilisé dans le bootstrap) n deepValidate : défini si les objets fils doivent eux aussi être validé
![Page 58: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/58.jpg)
Manipulation des objets 58
¤ Ajout n vehiculeInstance.addToRoues(new Roue(..))
¤ Suppression n objectInstance.delete()
n Options : n Flush : quand défini à « true », persiste l’objet immédiatement
n vehiculeInstance.removeFromRoues(roueInstance)
![Page 59: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/59.jpg)
Plugin : Resource 59
¤ Gestion des ressources n Images n CSS n Javascript
¤ Gestion via des modules n Fichier « ApplicationResources.groovy »
n Dépendances n Héritage
![Page 60: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/60.jpg)
Plugin : Resource 60
¤ Utilité n Cache n Importations optimisées dans les pages n Minimize n Concaténation de fichiers n Création de bundles
![Page 61: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/61.jpg)
Plugin : Resource 61
¤ Utilisation dans les pages n Importation de modules
n <r:require module=‘’moduleName’’/> n <r:require modules=‘’[moduleName1, moduleName2]’’
n Utilisation d’images n <g:img/> à la place de la balise <img/>
![Page 62: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/62.jpg)
Plugin : Spring Security 62
¤ Gestion de la sécurité n Existe depuis longtemps n Utilisé dans de nombreux frameworks n Eprouvé n Intégration facile n Options de base suffisantes n Potentiel de customisation
![Page 63: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/63.jpg)
Plugin : Spring Security 63
¤ Modèle de base n Classes
n User n Role n UserRole
n Controllers n LoginController n LogoutController
![Page 64: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/64.jpg)
Plugin : Spring Security 64
¤ Contrôle fin de la sécurité n Méthodes (actions) n Controller n Projet global
¤ Gestion d’une session n Utilisateur couramment identifié accessible n Exploitable depuis tous les composants
n Controller n Service n Vues
![Page 65: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/65.jpg)
Plugin : Spring Security 65
¤ TagLibs n <sec:ifLoggedIn> n <sec:ifNotLoggedIn>
![Page 66: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/66.jpg)
Plugin : Spring Security 66
¤ Respectez les étapes n Importation du plugin n Exécution de la commande de génération
n S2-quickstart fr.mbds.cwitter User Role
n Modification des classes existantes n Ajout des utilisateurs dans le BootStrap
![Page 67: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/67.jpg)
Plugin : Spring Security 67
¤ BootStrap
![Page 68: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/68.jpg)
Plugin : Spring Security 68
¤ BootStrap
![Page 69: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/69.jpg)
Documentation
¤ La documentation officielle sera votre première source d’information. n http://grails.org/doc/latest/guide/index.html
¤ Plugins n http://grails.org/plugins/
¤ Google ¤ Forums d’entraide
69
![Page 70: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/70.jpg)
Merci à vous !
¤ N’hésitez pas à me contacter pout toute demande d’informations : n Grégory Galli n E-mail : [email protected] n Site Web : www.tokidev.fr
¤ Bonne continuation à tous !
70
![Page 71: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/71.jpg)
Pratique
Réalisation d’une application « Twitter like »
Utilisation de tous les aspects de Grails
71
![Page 72: COURS GRAILS - myuuu.frmyuuu.fr/cours/MBDS/Grails/cours_grails.pdf · Basé sur le langage Groovy ! Groovy on Rails (agile) > Grails ! Construit sur un modèle MVC 11 . Groovy, c’est](https://reader031.fdocuments.fr/reader031/viewer/2022022701/5bbf5eab09d3f2f71d8bfa88/html5/thumbnails/72.jpg)
TP à réaliser 72