tapestry – hibernate

22
TAPESTRY – HIBERNATE Haag – Ismail – Lam – Santini – Trinh

Upload: mariel

Post on 18-Feb-2016

37 views

Category:

Documents


1 download

DESCRIPTION

Tapestry – Hibernate. Haag – Ismail – Lam – Santini – Trinh . Concept. Programmation web événementielle Orienté composant Processus de développement différent Architecture MVC Minimiser la configuration. Objectifs. Limiter au maximum le «  coding  » - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Tapestry  –  Hibernate

TAPESTRY – HIBERNATE

Haag – Ismail – Lam – Santini – Trinh

Page 2: Tapestry  –  Hibernate
Page 3: Tapestry  –  Hibernate

CONCEPT

Programmation web événementielle

Orienté composant

Processus de développement différent

Architecture MVC

Minimiser la configuration

Page 4: Tapestry  –  Hibernate

OBJECTIFS

Limiter au maximum le « coding »

Proposer des fonctionnalités «  ready-to-use

»

Optimiser le travail d’équipe

Optimiser le développement du code métier

Faciliter la tâche du développeur

Page 5: Tapestry  –  Hibernate

STRUCTURE

Page 6: Tapestry  –  Hibernate

GESTION D’ÉVÉNEMENTS Gestion basé sur des conventions

@OnEvent(value="success",component="loginForm")public Object valider() {…}

public Object onSubmitFromLoginForm(){…}

<t:form t:id="loginForm">…<input t:id="submitform" t:type="Submit" t:value="submit" /></t:form>

Page 7: Tapestry  –  Hibernate

LES ANNOTATIONS

@SessionState : Garde en session

@Inject : Injecte les dépendances

@Component : Référence sur un objet composant

@Persist : Sauvegarde l’état de l’objet

@OnEvent(component = ""): Associe le traitement à

l’action

@Property : Appelle les getter ou setter

Page 8: Tapestry  –  Hibernate

GRIDATASOURCE

Génère un tableau avec en entré: un objet Configuration du tableau Tri possible Ajout de nouvelles fonctionnalités

<p:modifiercell><t:if test=""> …

</t:if> </p:modifiercell>

<t:grid row="message" rowsPerPage="10" source="lmess" reorder="dateModification" exclude="messageId" add="delete,modifier">…</t:grid>

Page 9: Tapestry  –  Hibernate

BEANEDITFORM

Génère un formulaire avec en entré: un objet

Correspondance champs du formulaire et attribut de

l’objet

Gestion automatique des getters et setters

Configuration aisée: add, exclude, reorder,

submitLabel

<t:beaneditform t:id="form" t:object="user"/>

Page 10: Tapestry  –  Hibernate

LAYOUT Problème: Comment donner un design commun à toutes les

pages? Solution:

Layout.tml

contenu.tml

Page 11: Tapestry  –  Hibernate

LAYOUTLayout.tml<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"><head></head><body>

<t:body/> </body></html>

Contenu.tml<t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">HELLO</ t:layout >

Layout.java@IncludeStylesheet("context:ergo/style.css")public class Layout { }

Page 12: Tapestry  –  Hibernate

DIFFÉRENCES MAJEURES ENTRE V4 ET V5

Index.htmlHelloWorld Tutorial<p>

The current data and time is:

<span jwcid="@Insert" value="ognl:new java.util.Date()">June 26 2005</span>

Index.tmlHelloWorld Tutorial<p> The

current data and time is: ${currentTime}

Index.javapublic class Index { public Date getCurrentTime()

{ return new Date(); } }

Tapestry 4 Tapestry 5

Page 13: Tapestry  –  Hibernate

RÉSULTAT

Page 14: Tapestry  –  Hibernate

AVANTAGES & INCONVÉNIENTS

Avantages Simplification du modèle de développement Concept simple Faciliter le développement des applications web en

Java Rechargement des classes à chaud

Inconvénients La difficulté de prise en main (convention) pas de Retro compatibilité avec la version 4 Disparité au sein de la version 5 Communauté limitée et documentations éparses

Page 15: Tapestry  –  Hibernate

HIBERNATE

Page 16: Tapestry  –  Hibernate

HIBERNATE – CONCEPT ORM ( Object Relationnal Mapping)

Persistance

Abstraction

Adaptabilité aux bases de données

Page 17: Tapestry  –  Hibernate

HIBERNATE – OBJECTIF

Transparence des flux entre application java et la base de données

Rendre persistante les données manipulées

Page 18: Tapestry  –  Hibernate

HIBERNATE – ARCHITECTURE

Page 19: Tapestry  –  Hibernate

HIBERNATE – ARCHITECTURE DU FORUM

Page 20: Tapestry  –  Hibernate

HIBERNATE – REQUÊTES HQLpublic List<bdd.Categorie>

getAllCategorie() {

List<bdd.Categorie> categorieList = new Vector<bdd.Categorie>();bdd.Categorie categorie = null;

Session session = HibernateUtil.getSessionFactory().openSession();Query query = session.createQuery(" FROM Categorie WHERE Version=1").setMaxResults(300);java.util.List results = query.list();for (int i = 0; i < results.size(); i++) { categorie = (Categorie)results.get(i); categorieList.add(categorie);}session.close(); return categorieList;

}

Requêtes SQL équivalente: SELECT * FROM Categorie WHERE Version = 1

Différence: on utilise une List pour pouvoir récupérer les résultats, possibilité d’héritage, de polymorphisme et d’association

Remarque: On aurait pu écrire la requête comme ci-dessus ce qui traduit une grande souplesse

Persistance: save(), update() qui sont « automatique » si commit() ou rollback est utilisées sur un objet persistant.

Synchronisation: méthode flush()

Page 21: Tapestry  –  Hibernate

HIBERNATE – AVANTAGES & INCONVÉNIENTSAvantages

Open source

Grande communauté

Manipulation des objets

Réutilisabilité

Inconvénients

Framework jeune

Page 22: Tapestry  –  Hibernate

HIBERNATE – CONCLUSION

Hibernate rend plus aisé les traitements vers la base de données

Simplification et réduction du code