1 / 22

Tapestry – Hibernate

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  »

mariel
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 Haag – Ismail – Lam – Santini – Trinh

  2. Concept • Programmation web événementielle • Orienté composant • Processus de développement différent • Architecture MVC • Minimiser la configuration

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

  4. Structure

  5. Gestion d’événements • Gestion basé sur des conventions <t:form t:id="loginForm"> … <input t:id="submitform" t:type="Submit" t:value="submit" /> </t:form> @OnEvent(value="success",component="loginForm") public Object valider() { … } public Object onSubmitFromLoginForm(){ … }

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

  7. Gridatasource <t:gridrow="message" rowsPerPage="10" source="lmess" reorder="dateModification" exclude="messageId" add="delete,modifier"> … </t:grid> • 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>

  8. Beaneditform <t:beaneditform t:id="form" t:object="user"/> • 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

  9. Layout • Problème: Comment donner un design commun à toutes les pages? • Solution: Layout.tml contenu.tml

  10. Layout Layout.tml <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> <head> </head> <body> <t:body/> </body> </html> Layout.java @IncludeStylesheet("context:ergo/style.css") public class Layout { } Contenu.tml <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> HELLO </ t:layout >

  11. Différences majeures entre v4 et v5 Tapestry 4 Tapestry 5 Index.html HelloWorld Tutorial<p> The current data and time is: <span jwcid="@Insert" value="ognl:newjava.util.Date()">June 26 2005</span> Index.tml HelloWorld Tutorial<p> The current data and time is:${currentTime} • Index.java • public class Index { • public Date getCurrentTime() { return new Date(); } }

  12. Résultat

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

  14. Hibernate

  15. Hibernate – Concept • ORM ( Object RelationnalMapping) • Persistance • Abstraction • Adaptabilité aux bases de données

  16. Hibernate – objectif • Transparence des flux entre application java et la base de données • Rendre persistante les données manipulées

  17. Hibernate – Architecture

  18. Hibernate – Architecture du forum

  19. Hibernate – Requêtes HQL public List<bdd.Categorie> getAllCategorie() { List<bdd.Categorie> categorieList = new Vector<bdd.Categorie>(); bdd.Categoriecategorie = null; Session session = HibernateUtil.getSessionFactory().openSession(); Queryquery = session.createQuery("  FROM Categorie WHERE Version=1").setMaxResults(300); java.util.Listresults = 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()

  20. Hibernate – avantages & inconvénients Avantages • Open source • Grande communauté • Manipulation des objets • Réutilisabilité Inconvénients • Framework jeune

  21. Hibernate – conclusion • Hibernate rend plus aisé les traitements vers la base de données • Simplification et réduction du code

More Related