220 likes | 342 Views
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 »
E N D
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 » • 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
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(){ … }
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
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>
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
Layout • Problème: Comment donner un design commun à toutes les pages? • Solution: Layout.tml contenu.tml
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 >
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(); } }
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
Hibernate – Concept • ORM ( Object RelationnalMapping) • Persistance • Abstraction • Adaptabilité aux bases de données
Hibernate – objectif • Transparence des flux entre application java et la base de données • Rendre persistante les données manipulées
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()
Hibernate – avantages & inconvénients Avantages • Open source • Grande communauté • Manipulation des objets • Réutilisabilité Inconvénients • Framework jeune
Hibernate – conclusion • Hibernate rend plus aisé les traitements vers la base de données • Simplification et réduction du code