Académique Documents
Professionnel Documents
Culture Documents
2015/2016
Introduction
Introduction Programme Planning Rappels
Introduction
3
Grgory
Tokidev
Galli
S.A.S.
Consulting,
Bureau dtude,
dveloppement
informatique.
www.tokidev.fr
Avant de commencer
4
Posez
des questions !
Si
Me
Si
Avant de commencer
5
Si
Dbug
Ca marche pas !
Dveloppement
Rappel : MVC
6
Modle
Vue
Contrleur
Programme
Deux
SOAP
REST
(WSDL / UDDI)
Quelques exemples :
JBOSS
Apache Tomcat
Glassfish
Websphere
Prsentation Gnrale
Langage
Prototypage
Scaffolding
Gros projets
Avantages
13
Web
Cration
Scaffold
Run
Plugins
15
Tomcat
Hibernate
Trs
nombreux
Acclrent grandement le dveloppement
Ne pas en abuser
Twitter Bootstrap
16
Hibernate
17
Framework
Pluggable
GORM
18
Grails
niveau
grails create-domain-class org.bookstore.Book
Avantages
Rduction
de la quantit de code
Binding pouss
Mthodes
dynamiques
Inconvnients
On
Config
Domain : Dfinition du modle
Controller : Contrleurs web
i18n : Internationalisation
Service : Couche de service
View : Groovy Server Pages
SRC : Autre sources (Java / Groovy)
Test : Tests unitaires et dintgration
Web-app : ressources web
22
Config
23
BuildConfig
UrlMapping
Rgles de redirections
REGEXP
ApplicationResources
Ressources
24
Plugin
Optimisation
Compression
Concatnation
Assets
25
Javascript
CSS
+Mdias
Optimisation
Compression
Concatnation
DataSources
26
Configurations
base de donnes
Diffrentiation
Production / Test /
Production
dbCreate : Paramtre important qui
dfinit le comportement au
lancement du projet
create
create-drop
update
BuildConfig
27
runtime
build
compile
test
P
provided
VM Fork
UrlMapping
28
Configuration
Expressions
des redirections
rgulires
Vers des controllers / actions
Vers des vues
UrlMapping
29
Dfinitions
complexes et
contraintes :
$
30
Modle
31
Attributs
de la classe
hasMany / hasOne
constraints
mapping
mappedBy
Constructeurs
Mthodes de classe
Controlleur
32
Render
Redirect
[]
XML / JSON Converters
Controlleur
33
Comportement
Renvoi
par dfaut
la vue correspondante
Sinon, mthodes disposition
Redirect
Render
[]
Exemple:
Controllers
/
FrontController.groovy
Mthode index
Views/Front/index.gsp
i18n
34
Internationalisation
Injection
via gettext
17 langues par dfaut
${message (code:lb.hello)}
<g:message code=lb.hello/>
<g:message code="my.localized.content"
args="${ ['Juan', 'lunes'] }" />
i18n
35
Cas
complexes
Injection
Service
36
Threading possible
Attention au contexte de
persistance
Vues
37
Index
${ }
<% %>
<g:xxx />
Resources accessible (grailsApplication)
Vues - Layout
38
Default title
<g:layoutHead />
<r:layoutResources />
<g:layoutBody />
<r:layoutResources />
Web app
39
Web-app
/css
/images
/js
/meta-inf
/web-inf
Grails 2.0.0
40
Version
Intgration
Grails 2.2.0
41
Forked
Tomcat Execution
Projections SQL dans les requtes via Critres (createCriteria)
Grails 2.3.0
42
Forked VM Execution
REST support improvement
REST Mapping
Scaffolding for REST Controllers
Scaffolding plugin
Async support
Controller Global Exception Handling
Namespaces for Controller
Grails 2.4.0
43
Groovy
2.3
Spring 4
Hibernate 4.3
Assets
Amlioration des Transactions
Amlioration des Tests unitaires
Amlioration des Subqueries
Grails 2.4.0
44
Subqueries
45
Un peu de pratique !
Prparation de lenvironnement de travail
Modlisation
46
Cration
du modle
Accs
Cration
Modlisation
47
Cration du modle
Dfinition des attributs
Relations
Contraintes
Modlisation
48
Possibilit
dhritage
Modlisation Relations
49
One
to one
Unidirectionnelle
Bidirectionnelle
Comportement de cascade
Modlisation Relations
50
One
to one Bidirectionnelle
new
Face(nose:new Nose()).save()
def
Equivalent
Modlisation Relations
51
One
to one Bidirectionnelle
Clef
Modlisation Relations
52
personInstance1.parent = personneInstance2
personneInstance1.parent personneInstance2
personneInstance2.supervisor personneInstance1
Modlisation Relations
53
Subtilits
Solution
cas complexes
Modlisation Relations
54
One
to many
books
sera un Set
Unidirectionnel par dfaut, comme en one to one
Comportement de cascade par dfaut :
Cascade
Modlisation Relations
55
One
to many - belongsTo
Cascade
les deletes
Relation bidirectionnelle
Modlisation Relations
56
Subtilits
Mlange
Cas complexes
des relations
Expliciter via la proprit mappedBy
Expliciter le modle
Modlisation Relations
57
Subtilits
Cas complexes
Modlisation Relations
58
Many
to many
Obligation
Afin
Pas
de scaffolding
Modlisation Relations
59
Many
to many
Option
Option
Modlisation Relations
60
Trs
important
Dfinition
du responsable dune
association via la proprit
belongsTo
Je cre un objet Roue qui belongsTo
Vehicule , si jefface le vhicule, ma
roue sera efface elle aussi car une
relation forte est dfinie entre les deux
objets
Modlisation Relations
61
Si
belongsTo Vehicule
Dpendance forte
Une roue ne peux pas tre cre seule
Ncessit de crer un vhicule et dy
attacher la roue
Modlisation Relations
62
Ajout
dune Roue
new Roue() KO
vehiculeInstance.addToRoues(new Roue()) OK
Retrait
dune roue
roueInstance.delete() KO
vehiculeInstance.removeFromRoues(roueInstance) - OK
Modlisation Relations
63
Relation
dfaut
Non
ordonn
ordonne
Gestion automatique des index
Colonne supplmentaire dans la table
Modlisation Relations
64
Quelques
Un
Une
proprits
Modlisation - Contraintes
65
Proprit constraints
unique
blank
nullable
size
url
mail
max, maxSize
http://grails.org/doc/latest/ref/Constraints/Usage.html
Modlisation - Mapping
66
Proprit
mapping
Permets
static mapping =
{
table bool
cache usage: 'read-only',
include: 'non-lazy'
}
Modlisation - Mapping
67
Proprit
Permets
mapping
Modlisation - Mapping
68
Proprit
Lazy
mapping
loading
Par dfaut si un objet possde une rfrence sur un autre objet, ce dernier
ne sera pas charg en mmoire, si on dsire que le comportement de
base soit diffrent, il faut lexpliciter.
static mapping = {
books lazy:false
}
Modlisation - Mapping
69
Proprit mapping
Les comportements comme les transactions et les cascades SQL peuvent tre dfinies
dans ce bloc
static mapping = {
book lazy: false, cascade:"all,delete-orphan
}
Modlisation - Mapping
70
Proprit
De
mapping
Requtes
Rcupration
par ID : Object.get(id)
Rcupration de tous les objets :
Object.list()
Object.getAll()
Requte
sur proprit :
Object.findByName(lenom)
Object.findAllByName(lenom)
Sauvegarde
objectInstance.save()
Options :
Flush : quand dfini true , persiste lobjet immdiatement
Validate : valide la persistance de lobjet
Insert : force hibernate utiliser un INSERT(true) ou un UPDATE (false
failOnError : si la persistance echoue, une exception sera leve
(souvent utilis dans le bootstrap)
deepValidate : dfini si les objets fils doivent eux aussi tre valid
Ajout
vehiculeInstance.addToRoues(new
Roue(..))
Suppression
objectInstance.delete()
Options :
Flush : quand dfini true , persiste lobjet immdiatement
vehiculeInstance.removeFromRoues(roueInstance)
Where Queries
76
Plus
construit la requte
On excute la requte
Where Queries
Critres
==
eq
Egalit stricte
!=
ne
Diffrence
>
gt
Suprieur
<
lt
Infrieur
>=
ge
Suprieur ou gal
<=
le
Infrieur ou gal
In
inList
==~
like
=~
ilike
Utilisation
Enchainement
illimit de requtes
Requtes
Utilisation
Oprateur
Avg
Moyenne
Sum
Somme
Max
Valeur max
Min
Valeur min
Count
Utilisation
De
Fonction
Second
Minute
Hour
Day
Month
Year
De
Fonction
Lower
Upper
Length
Trim
De
Critres
90
Mode
Critres
91
Conclusion
92
93
Attributs
de base
Golocalisation
Dates
Flags
Relations
Contraintes
Mapping
classiques
Donnes dinitialisation
99
Via
le fichier Boostrap.groovy
Dans
On
grails-app/conf
Scaffolding
103
Controller
Views
Tests
Documentation
104
La
Plugins
http://grails.org/plugins/
Google
Forums
dentraide
Merci vous !
105
Nhsitez
Galli
E-mail : greg.galli@tokidev.fr
Site Web : www.tokidev.fr
Bonne
continuation tous !