Tapestry / Hibernate - gardeux

publicité
JEE Approfondi
LIMA LOPES Fabrice – MARTINS Sylvie – SOW Demba
I.
a.
b.
c.
d.
e.
f.
II.
a.
b.
c.
d.
e.

Programmation WEB évènementielle

Notion de composant

Semblable aux applications bureautiques

Prise en charge de manière transparente de
nombreuses problématiques  le
développeur de se concentrer sur la partie
métier


Pas de servlet ! 
Toujours deux représentations :
 Logique (.java) : code métier de la page
 Graphique (.tml ou .html) : vue de la page

Exemple :
• index.java
• index.tml ou index.html




Une page .tml (ou .html) est composée de
composants
A chaque composant est associé un
évènement (eventhandler)
Toute action sur un des composants
déclenche la logique associée
Injection de dépendance pour les messages
de validation et l’internationalisation

N’importe quelle méthode peut servir de

Annotation @onEvent + id du composant
eventhandler
• index.tml
<t:form t:id="loginForm">
<t:textfield t:value="message"/>
<input type="submit" value="Submit"/>
</t:form>
• index.java
@OnEvent(value="submit", component="loginForm")
void onFormSubmit() {
System.out.println("Handling form submission!");
}

Quand pas de jdk5 :
◦ Règle de nommage
1. Ecrire le type d’évènement (ex : onSubmit)
2. Ajouter la provenance de l’évènement: From
3. Mettre l’id du composant : (ex : LoginForm)
void onSubmitFromLoginForm(){}

Beanediform : création d’un formulaire via pojo
◦ <t:loop> : List en paramètre qui a le même
principe que le for each de la jstl
◦ <t:if> " "
◦ Devine le type de champs qu'il doit utiliser
◦ Customisable :
 exclude : éliminer des colonnes
 add : ajouter des colonnes
 reorder : imposer un ordre
◦ Forcer le rendu
<t:parameter>
<!-- Fournir ici l'implementation -- >
<t:paramerter>
<t:beaneditform object="contact" submitLabel = "Ajouter"
reorder="nom,prenom,mobile,mail,commentaire">
<t:parameter name="commentaire">
<t:label for="commentaire"/>
<t:textarea t:id="commentaire"
t:value="contact.commentaire" cols="30"
rows="5"
/>
</t:parameter>
</t:beaneditform>

Pareil mais objet de type collection au lieu du
pojo

Presque les mêmes propriétés

Pagination automatique : rowsperpage !
<t:grid t:source="allContact"
exclude="id,commentaire" row="contact"
rowsPerPage="8"
reorder="nom,prenom,mobile,mail" add="delete"
pagerPosition="bottom"
>
<t:parameter name="nomCell">
<t:pagelink t:page="DetailsPage"
t:context="contact.id">${contact.nom}
</t:pagelink>
</t:parameter>
</t:grid>

t:validate=required
◦ Si pas renseigné  Erreur
◦ Spécification dans le fichier app.Property


@ApplicationState : met en session
@Persist : garde objet pour la prochaine
page(POST)

@Inject : injection des dépendances

@Component : référence sur un objet composant

onActivate & onPassivate : garde objet pour la
prochaine page(GET)

Prise en main rapide

Concept simple

Environnement familier

Génération automatique des tâches
redondantes

Faible communauté   peu de ressources

Transformation :
modèle relationnel  modèle objet


Création couche abstraction (appelé couche
de persistance) : couche entre application et
la base de données
Séparation des tâches
Application
Persistence Object
Hibernate
Hibernate.properties
Database
XML Mapping

ORM (Object Relational Mapping)
Domaine Objet
Contact
Domaine Relationnel
contact.hbm.xml
Table Contact

Langage de requêtage d’Hibernate

Ressemble fortement au SQL

Requête sur champ d’une table de la BDD

Totalement orienté objet
 Héritage
 Polymorphisme
 Association

Semblable à HQL

Requête sur objet

Mais, écriture beaucoup plus orientée objet
Exemple HQL
Query query = sessionCreateQuery("from
contact when contact.id=:id");
Query.setInteger("id", id)

Exemple Criteria
Criteria crit = session.createCriteria (
Contact.class);
Crit.add(Expression.ilike("contactLogin",id));




Contrôle :
Hibernate permet l’interdiction de modifier
ou insérer une propriété.
<property name=« id» column=« contact_id»
◦ Insert = false
◦ Update=false
◦ >

Association : Hibernate prend en charge les
associations entre table sous forme de tag
◦ <one to many name=« ..» class=« » key=« »/>
◦ <many to many « ….. »>
Component
 Une instance d’un table devient un objet
Cet objet peut aussi être une composition
d’objet.

<property name=« client_nom»
column=« Client_nom»
<component name=« adresse»
<property ……

Très puissant

Facile à prendre en main

Grande communauté de développeurs 

Mises à jours récurrentes
Téléchargement
Study collections