tapestry – hibernate
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 PresentationTRANSCRIPT
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
STRUCTURE
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>
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
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>
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"/>
LAYOUT Problème: Comment donner un design commun à toutes les
pages? Solution:
Layout.tml
contenu.tml
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 { }
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
RÉSULTAT
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
HIBERNATE – CONCEPT ORM ( Object Relationnal Mapping)
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 – ARCHITECTURE
HIBERNATE – ARCHITECTURE DU FORUM
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()
HIBERNATE – AVANTAGES & INCONVÉNIENTSAvantages
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