TAPESTRY & ECLIPSE LINK

Presentation au format PowerPoint

1- TAPESTRY

1.1- Presentation

Tapestry est un framework permettant le developpement d'application web basees sur la technologie JEE. C'est un projet de la fondation Apache. Contrairement a Struts qui concerne des applications web de grande envergure, Tapestry est adapte a des projets de petite taille. Le concept de ce framework se base sur les composants, qui vont representer les unites logiques de l'application. On utilise les composants du framework (la page etant l'unite de base) et l'on peut a son gre creer de nouveau composants. Ce framework invite donc le developpeur a se concentrer activement sur la logique metier de son application. On pourra noter que Tapestry utilise la technologie XML pour representer l'architecture MVC.

1.2- Installation

Telecharger le app.war a l'adresse suivante :
http://tapestry4nonbelievers.googlecode.com/files/app.war
Sous Eclipse: File->Import->War file-> app.war
Modifier web.xml: Attribut context-param: preciser le nom du noeud racine qui contient les differents composants.
Tapestry se charge de faire le lien!!!

1.3- Fonctionnement

Il existe 2 types de composants:

- PAGE -> composee d'un fichier template (monFichier.tml) et d'un fichier java (monFichier.java).
- COMPOSANTS : un fichier template (monFichier.tml) et d'un fichier java (monFichier.java) qui composent une page Composant layout : encadrer toutes vos pages par un contenu commun.

1.4- Avantages de Tapestry

Tapestry est Tres facile a debugger et possede des mises a jour dynamiques ce qui implique un gain de temps de production assez important.
Il y a aussi une grande facilite d’apprentissage (documentations, exemples start.java, Web.xml reduit).

1.5- Les desavantages de Tapestry

Tapestry est tres stricte au niveau des conventions. Il faut donc repartir a zero au niveau de l'apprentissage et ne pas se baser sur vos connaissance ulterieur des autres frameworks.

2- Eclipse Link

2.1- Presentation

Le projet EclipseLink, cree suite a la mise en open-source de TopLink par Oracle, a ete choisi pour etre l'implementation de reference de la specification JPA 2.0 (JSR 317). Dans la pratique cela signifie notamment son integration dans Glassfish V3.
L'implementation d'une couche de mapping objet-relationnel entre un modele metier "objet" et une base de donnees relationnelle presente de nombreux avantages. La maitrise de l'API JPA et la qualite d'une implementation JPA telle qu'EclipseLink (Eclipse Persistence Services) permettent aux developpeurs d'exploiter pleinement les interets du mapping objet-relationnel.
Voici ce que prend en compte Eclipse Link:

La persistance des objets:
* Le mapping objet-relationnel et la notion "d'impedence mismatch".
* Les solutions du monde Java : Hibernate, TopLink, JDO, EJB.
* Interets de la specification JPA (Java Persistence API).
* Le projet Eclipse Persistence Services et la mise en open-source de TopLink : EclipseLink.

Prise en main de JPA et d'EclipseLink:
* La notion de POJO.
* Developper et tester une entite JPA avec Eclipse et EclipseLink. Les outils proposes par le projet Dali.
* Installation et configuration d'EclipseLink. Le fichier persistence.xml de JPA.
* La definition du mapping : annotations et/ou fichier XML.
* Utilisation dans un contexte Java EE et dans un contexte client.
Manipulation des entites
* Le principe du CRUD.
* La manipulation des entites via l'EntityManager de JPA.
* Le cycle de vie des entites : les etats 'new', 'managed', 'detached' et 'removed'.
* L'utilisation des 'callbacks' de JPA.
* La gestion des transactions.

Definition du mapping:
* Mapping sans annotations
* Mapping par annotations
* Mapper une entite sur plusieurs tables
* Entites et composition
* Definition des cles. Cles multiples, cles auto-incrementees…
* Principe de la gestion des relations
* Relations et collections.
* Relations 1:1, 1:N, N:1 et M:N.
* Specificites d'EclipseLink pour le mapping des collections.

Le requetage:
* Langage de requetes JPQL
* Definition d'une requete
* Execution d'une requete
* Requetes parametrees
* Syntaxe de JPQL

Optimisation du mapping:
* Definir la politique de chargement ("Fetch type"). Les modes EAGER et LAZY.
* L'attribut 'Cascade' pour les relations.
* Le mapping de l'heritage.
* La gestion des verrous : mise en oeuvre des modes optimiste et pessimiste.
* Les optimisations propres a EclipseLink.
* Les mecanismes de cache

2.2- Installation

Il suffit d'importer dans Eclipse le package eclipse-link.jar ainsi que persistance.jar si vous voulez utiliser les outils de persistance.
Il faudra alors modifier le fichier persistance.xml pour y ajouter les classes persistantes.
Il sera conseille d'installer la base de donnees Derby grâce au package derby.jar et derbyclient.jar a importer dans Eclipse.

2.3- Fonctionnement

Deux outils de Eclipse Link seront utilise dans le projet: MOXY(JAXB) et JPA.

- Pour JAXB -> Transformation d'un XML vers des objets Java et inversement, vous devez creer un schema xsd de votre futur XML.
Puis generez les classes Java automatiquement via la commande Shell: jxc schema.xsd. Les fichiers Java seront par defaut dans le repertoire 'generated'.
puis utilise le code Java suivant pour extraire les donnees ou les importees depuis ou vers le XML -> 'Marshall(JAXBContext.newInstance()generated) / Unmarchall() '.
- pour JPA -> Apres ajout de vos fichiers Java dans le fichier persistance.xml vous devez annoter votre code de tel sorte que les classes soit de type '@Entity (classes)' et les attributs de type '@colomn(table=''VOTRE TABLE'')'.

2.4- Avantages de Eclipse Link

Eclipse Link est utilisable pour un grand nombre de base de donnees tel que Oracle, Derby, MySQL, etc...
L'avantage d'utiliser Derby est que cette BDD s'integre directement a Eclipse. Eclipse Link etant une sorte de package contenant plusieurs outils simple d'installation.

2.5- Les desavantages de Eclipse Link

Il faut bien prendre en compte que Eclipse Link n'est pas autant un Framework qu'il pourrait y faire pense. C'est plutot une sorte de package contenant d'autre framework tel que JAXB ou TopLilk en version ameliore. IL faut donc utilise les outils d'Eclipse Link en se referencant a l'utilisation des autres framework qu'il utilise.
ex: MOXY --> JAXB / JPA --> TopLink.

3- Composition du Projet

Le projet a telecharger ici sous forme "war" est structure de la facon suivante:

- Le fichier test.sql permet l'implementation initiale de la base de donnees.
- Le fichier persistance.xml contient les classes Java persistantes.
- Le repertoire WEB-INF contient l'ensemble des fichiers template .tml utilisable par Tapestry.
- Les packages carnet.components, carnet.data, carnet.entities, carnet.pages, carnet.services et dao contiennent les fichiers Java qui sont utilises pour l'implementation de la partie Tapestry.
- le package generated contient les classes java persistantes generer par JAXB ainsi que les fichiers d'extractions et d'importation d'objet Java vers ou depuis les fichier XML administrateur.xml et utilisateur.xml enregistrer dans le dossier racine.

- IMPORTANT: les fichiers XML administrateur.xml et utilisateur.xml sont les lien entre la partie Taperstry et EclipseLink.

4- Bibliographie

http://tapestry.apache.org/tapestry4/ http://fr.wikipedia.org/wiki/Apache_Tapestry http://myworkspace.sourceforge.net/Illustrating_Tapestry.html
http://jnb.ociweb.com/jnb/jnbMay2004.html
http://www.devx.com/Java/Article/30316W
http://www.supinfo-projects.com/fr/2006/tapestry_fr/introduction

http://www.eclipse.org/eclipselink/downloads/
http://www.eclipse.org/eclipselink/
http://www.oxiane.com/formation_jp-eli_eclipse_persistence_eclipselink.html
http://java.dzone.com/articles/introducing-eclipselink
http://eclipse.dzone.com/articles/introducing-eclipselink
http://www.slideshare.net/pelegri/eclipselink-jpa-presentation
http://wiki.eclipse.org/EclipseLink/Development/Architecture/EclipseLink