72
COURS GRAILS Novembre 2013

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

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

TP à réaliser 72