1 / 27

Tapestry / Hibernate

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

louie
Télécharger la présentation

Tapestry / Hibernate

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tapestry / Hibernate JEE Approfondi LIMA LOPES Fabrice – MARTINS Sylvie – SOW Demba

  2. PLAN • Tapestry • Concept • Architecture • Stratégie • Gestion des évènements • Composants avancés • L’internationalisation

  3. Plan (suite) II. Hibernate • Concept • Architecture • Cycle de vie • Stratégie • HQL et Criteria

  4. Concept • 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

  5. Architecture • Pas de servlet !  • Toujours deux représentations : • Logique (.java) : code métier de la page • Graphique (.tml ou .html) : vue de la page • Exemple :

  6. Stratégie • 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

  7. Gestion des évènements • N’importe quelle méthode peut servir de eventhandler • Annotation @onEvent + id du composant • index.tml • <t:formt:id="loginForm"> • <t:textfield t:value="message"/> • <input type="submit" value="Submit"/> • </t:form> • @OnEvent(value="submit", component="loginForm") • voidonFormSubmit() { • System.out.println("Handling formsubmission!"); • } • index.java

  8. Gestion des évènements • Quand pas de jdk5 : • Règle de nommage • Ecrire le type d’évènement (ex : onSubmit) • Ajouter la provenance de l’évènement: From • Mettre l’id du composant : (ex : LoginForm) voidonSubmitFromLoginForm(){}

  9. Composants avancés • Beanediform : création d’un formulaire via pojo • <t:loop> : List en paramètre qui a le même principe que le for eachde 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>

  10. Beaneditform : exemple <t:beaneditformobject="contact" submitLabel = "Ajouter" reorder="nom,prenom,mobile,mail,commentaire"> <t:parametername="commentaire"> <t:label for="commentaire"/> <t:textarea t:id="commentaire" t:value="contact.commentaire" cols="30" rows="5" /> </t:parameter> </t:beaneditform>

  11. Le Gridatasource • Pareil mais objet de type collection au lieu du pojo • Presque les mêmes propriétés • Pagination automatique : rowsperpage !

  12. Le Gridatasource : exemple <t:grid t:source="allContact" exclude="id,commentaire" row="contact" rowsPerPage="8" reorder="nom,prenom,mobile,mail" add="delete" pagerPosition="bottom" > <t:parametername="nomCell"> <t:pagelink t:page="DetailsPage" t:context="contact.id">${contact.nom} </t:pagelink> </t:parameter> </t:grid>

  13. Validation • t:validate=required • Si pas renseigné  Erreur • Spécification dans le fichier app.Property

  14. Utilisation d’annotations • @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)

  15. Conclusion Tapestry • Prise en main rapide • Concept simple • Environnement familier • Génération automatique des tâches redondantes • Faible communauté   peu de ressources

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

  17. Architecture Application Persistence Object Hibernate Hibernate.properties XML Mapping Database

  18. Cycle de vie

  19. Stratégie • ORM (Object RelationalMapping) Contact contact.hbm.xml Table Contact

  20. HQL • 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

  21. Criteria • Semblable à HQL • Requête sur objet • Mais, écriture beaucoup plus orientée objet

  22. Comparaison Exemple HQL Queryquery = sessionCreateQuery("from contact when contact.id=:id"); Query.setInteger("id", id) Exemple Criteria Criteriacrit = session.createCriteria ( Contact.class); Crit.add(Expression.ilike("contactLogin",id));

  23. Mapping • Contrôle : • Hibernate permet l’interdiction de modifier ou insérer une propriété. • <propertyname=« id» column=« contact_id» • Insert = false • Update=false • > • Association : Hibernate prend en charge les associations entre table sous forme de tag • <one to manyname=«  ..» class=«  » key=«  »/> • <manyto many «  ….. »>

  24. Mapping (suite) • Component • Une instance d’un table devient un objet Cet objet peut aussi être une composition d’objet. <propertyname=« client_nom» column=«  Client_nom» <component name=« adresse» <property ……

  25. Conclusion hibernate • Très puissant • Facile à prendre en main • Grande communauté de développeurs  • Mises à jours récurrentes

More Related