+ All Categories
Home > Documents > Tapestry / Hibernate

Tapestry / Hibernate

Date post: 24-Feb-2016
Category:
Upload: louie
View: 58 times
Download: 0 times
Share this document with a friend
Description:
Tapestry / Hibernate. JEE Approfondi. LIMA LOPES Fabrice – MARTINS Sylvie – SOW Demba. PLAN. Tapestry Concept Architecture Stratégie Gestion des évènements Composants avancés L’internationalisation. Plan (suite). II. Hibernate Concept Architecture Cycle de vie - PowerPoint PPT Presentation
Popular Tags:
27
Tapestry / Hibernate JEE Approfondi LIMA LOPES Fabrice – MARTINS Sylvie – SOW Demba
Transcript
Page 1: Tapestry  /  Hibernate

Tapestry / HibernateJEE Approfondi

LIMA LOPES Fabrice – MARTINS Sylvie – SOW Demba

Page 2: Tapestry  /  Hibernate

I. Tapestrya. Conceptb. Architecturec. Stratégied. Gestion des évènementse. Composants avancésf. L’internationalisation

PLAN

Page 3: Tapestry  /  Hibernate

II. Hibernatea. Conceptb. Architecturec. Cycle de vied. Stratégiee. HQL et Criteria

Plan (suite)

Page 4: Tapestry  /  Hibernate
Page 5: Tapestry  /  Hibernate

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

Concept

Page 6: Tapestry  /  Hibernate

Pas de servlet ! Toujours deux représentations :

Logique (.java) : code métier de la page Graphique (.tml ou .html) : vue de la page

Exemple :

Architecture

• index.java • index.tml ou index.html

Page 7: Tapestry  /  Hibernate

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

Stratégie

Page 8: Tapestry  /  Hibernate

N’importe quelle méthode peut servir de eventhandler

Annotation @onEvent + id du composant

Gestion des évènements

<t:form t:id="loginForm"><t:textfield t:value="message"/><input type="submit" value="Submit"/>

</t:form>

@OnEvent(value="submit", component="loginForm") void onFormSubmit() {

System.out.println("Handling form submission!");}

• index.tml

• index.java

Page 9: Tapestry  /  Hibernate

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: From3. Mettre l’id du composant : (ex : LoginForm)

void onSubmitFromLoginForm(){}

Gestion des évènements

Page 10: Tapestry  /  Hibernate

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

Composants avancés

<t:parameter><!-- Fournir ici l'implementation -- >

<t:paramerter>

Page 11: Tapestry  /  Hibernate

Beaneditform : exemple<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>

Page 12: Tapestry  /  Hibernate

Pareil mais objet de type collection au lieu du pojo

Presque les mêmes propriétés

Pagination automatique : rowsperpage !

Le Gridatasource

Page 13: Tapestry  /  Hibernate

<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>

Le Gridatasource : exemple

Page 14: Tapestry  /  Hibernate

Validation t:validate=required

◦ Si pas renseigné Erreur◦ Spécification dans le fichier app.Property

Page 15: Tapestry  /  Hibernate

@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)

Utilisation d’annotations

Page 16: Tapestry  /  Hibernate

Prise en main rapide

Concept simple

Environnement familier

Génération automatique des tâches redondantes

Faible communauté peu de ressources

Conclusion Tapestry

Page 17: Tapestry  /  Hibernate
Page 18: Tapestry  /  Hibernate

Concept 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

Page 19: Tapestry  /  Hibernate

Architecture

Database

Hibernate

Application

Persistence Object

Hibernate.properties XML Mapping

Page 20: Tapestry  /  Hibernate

Cycle de vie

Page 21: Tapestry  /  Hibernate

ORM (Object Relational Mapping)

Stratégie

Domaine Objet Domaine RelationnelContact contact.hbm.xml Table Contact

Page 22: Tapestry  /  Hibernate

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

HQL

Page 23: Tapestry  /  Hibernate

Semblable à HQL

Requête sur objet

Mais, écriture beaucoup plus orientée objet

Criteria

Page 24: Tapestry  /  Hibernate

Comparaison Exemple HQLQuery query = sessionCreateQuery("from

contact when contact.id=:id");Query.setInteger("id", id)

Exemple CriteriaCriteria crit = session.createCriteria

( Contact.class);Crit.add(Expression.ilike("contactLogin",id));

Page 25: Tapestry  /  Hibernate

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 «  ….. »>

Mapping

Page 26: Tapestry  /  Hibernate

Component Une instance d’un table devient un objetCet objet peut aussi être une composition

d’objet.

<property name=« client_nom» column=«  Client_nom»<component name=« adresse»<property ……

Mapping (suite)

Page 27: Tapestry  /  Hibernate

Très puissant

Facile à prendre en main

Grande communauté de développeurs

Mises à jours récurrentes

Conclusion hibernate


Recommended