20091020 JPA2

788 vues

Publié le

Publié dans : Technologie, Formation
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
788
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
47
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

20091020 JPA2

  1. 1. Java Persistent APIAuteur : PEREZ Noël nperez@hinnoya.frDate : Octobre 2009
  2. 2. Plan ● Principes des Frameworks de persistence ● Historique ● JPA 1.0 ● JPA 2.0 ● Demo ● Questions?JUG Lyon / oct 2009 Java Persistent API 2
  3. 3. BIO Noël Perez ● Architecte Java chez Hinnoya http://www.hinnoya.fr ● Formateur : ● Java/JEE/Struts/Hibernate ( bientôt JPA ) http://www.proatis.fr ● Auteur : ● Article sur JPA paru dans linuxdevjournal mi 2008 http://www.pere-nono.netJUG Lyon / oct 2009 Java Persistent API 3
  4. 4. Groupe Hinnoya Hinnoya Centre Est Centre de services informatique Lyonnais Pôle .Net Pôle Php Pôle Java Technos : ASP/C#, Technos : Symphony, Technos : JEE, DotNetNuke, Joomla, Struts, … PHP5, Spring / SEAM, … GWT, ... Délégation de compétences Conseil Centre de services Organisme de formation agrée ●Formation téchnologique ●Bureautique ●Gestion de projet ●Applicatif métierJUG Lyon / oct 2009 Java Persistent API 4
  5. 5. Plan ● Principes des Frameworks de persistence ● Historique ● JPA 1.0 ● JPA 2.0 ● Démo ● Questions?JUG Lyon / oct 2009 Java Persistent API 5
  6. 6. ● Principes ●Historique ●JPA 1.0 Problématique ●JPA 2.0 ●Démo ●Questions? ● Application inconcevable sans sauvegarde des données ● Beaucoup de codes répétitifs : ● ouverture de connexions, ● gestion de requêtes multiples, ● traitement du résultat, … ● Sauvegarde porte sur des objets métiers → 1 objet métier = 1 tableJUG Lyon / oct 2009 Java Persistent API 6
  7. 7. ● Principes ●Historique ●JPA 1.0 Problème gestion JDBC ●JPA 2.0 ●Démo ●Questions? ● Besoin dexperts pour créer schémas et requêtes de la base, ● difficulté à maintenir ce même schéma et ces requêtes, ● Opérations coûteuses ● Peu d’intérêt, très répétitive ● dépendance vis à vis de la base initiale → peut nuire à la montée en charge dune application.JUG Lyon / oct 2009 Java Persistent API 7
  8. 8. ● Principes ●Historique ●JPA 1.0 Couches ●JPA 2.0 ●Démo ●Questions? Utilisateurs Couche interface utilisateur ( UI ) Couche métier Couche daccès aux données ( DAO ) Couche de persistence JDBC Base de donnéesJUG Lyon / oct 2009 Java Persistent API 8
  9. 9. ● Principes Solution : frameworks de ●Historique ●JPA 1.0 ●JPA 2.0 persistence ●Démo ●Questions?● Travail à partir de POJO● Ajout d’informations permettant de mapper les propriétés d’objets avec les colonnes des tables● Possibilité de demander à sauver un objet, le supprimer, le mettre à jour● Possibilité d’interroger la base en manipulant les objets ( pur java )JUG Lyon / oct 2009 Java Persistent API 9
  10. 10. ● Principes ●Historique ●JPA 1.0 Principe technique ●JPA 2.0 ●Démo ●Questions? ● 1 classe à persister = 1 description du mode persistance ● Indique la table ● Indique les correspondances de champs – Type – Obligation – Clé – Lien avec d’autres objets ● 1 fichier de configuration générale décrivant l’accès à la base de donnéesJUG Lyon / oct 2009 Java Persistent API 10
  11. 11. Plan ● Principes des Frameworks de persistence ● Historique ● JPA 1.0 ● JPA 2.0 ● Démo ● Questions?JUG Lyon / oct 2009 Java Persistent API 11
  12. 12. ●Principes ●Historique ●JPA 1.0 Historique ●JPA 2.0 ●Démo ●Questions? JPA2 Final draft mars 2009 JPA:mai 2006 JDO2.0:2005 Hibernate 3.5.0.Beta-1 août.2009 JDO : 2002 Hibernate3.0 : fin 2004 Hibernate0.8 : fin 2001 EJB1.0JUG Lyon / oct 2009 Java Persistent API 12
  13. 13. ●Principes ●Historique ●JPA 1.0 Participant JSR 317 ●JPA 2.0 ●Démo ●Questions?JUG Lyon / oct 2009 Java Persistent API 13
  14. 14. Plan ● Principes des Frameworks de persistence ● Historique ● JPA 1.0 ● JPA 2.0 ● Demo ● Questions?JUG Lyon / oct 2009 Java Persistent API 14
  15. 15. ●Principes ●Historique ●JPA 1.0 Couches ●JPA 2.0 ●Démo ●Questions? Utilisateurs Couche interface utilisateur ( UI ) Simple POJO avec des annotations Couche métier pour gérer la persistance Couche daccès aux données ( DAO ) Appel aux fonctions de persistance Objets persistants JPA Ajout dans le code de lapplication des sauvegardes, chargement ou requete Hibernate/OpenJPA/TopLink/... vers les objets persistant JDBC Base de donnéesJUG Lyon / oct 2009 Java Persistent API 15
  16. 16. ●Principes ●Historique ●JPA 1.0 Cycle de vie ●JPA 2.0 ●Démo ●Questions? Nouvelle instance Transient remove persist detach refresh Persistant Récupération par le Fermeture du context / garbage collector serialisation merge DétachéJUG Lyon / oct 2009 Java Persistent API 16
  17. 17. ●Principes ●Historique ●JPA 1.0 Injections ( callback method ) ●JPA 2.0 ●Demo ●Questions? Instanciation @PrePersist,@PostPersist @PostLoad @PreRemove @PostRemove Persistant Suppression @PreUpdate, @PostUpdate DétachéJUG Lyon / oct 2009 Java Persistent API 17
  18. 18. ●Principes ●Historique ●JPA 1.0 Injections 2/2 ●JPA 2.0 ●Démo ●Questions? ● Tient compte de lhéritage ● Les injections classe mère en dernier ● Possible de désactiver les appels de la classe mère ● Tient compte de lordre dans le fichier ( même injection présente plusieurs fois )JUG Lyon / oct 2009 Java Persistent API 18
  19. 19. ●Principes ●Historique ●JPA 1.0 Requetage ●JPA 2.0 ●Démo ●Questions? ● SQL ● JPQLselect distinct joueurfrom Club club, Personne joueurwhere joueur member of club.organisateursJUG Lyon / oct 2009 Java Persistent API 19
  20. 20. ●Principes ●Historique ●JPA 1.0 Fonctionnalités standards ●JPA 2.0 ●Démo ●Questions? ● Lazy strategie sur les Fetch ● Traitement en cascade ● Gestion des transactions ● Lock dobjetJUG Lyon / oct 2009 Java Persistent API 20
  21. 21. ●Principes ●Historique ●JPA 1.0 Autres fonctionnalités ●JPA 2.0 ●Démo ●Questions? ● Création de requêtes nommées ( Named Queries )JUG Lyon / oct 2009 Java Persistent API 21
  22. 22. Plan ● Principes des Frameworks de persistence ● Historique ● JPA 1.0 ● JPA 2.0 ● Démo ● Questions?JUG Lyon / oct 2009 Java Persistent API 22
  23. 23. ●Principes ●Historique ●JPA 1.0 JPQL ● JPA 2.0 ●Démo ●Questions? Aucune nouveauté depuis la version 1.0JUG Lyon / oct 2009 Java Persistent API 23
  24. 24. ●Principes ●Historique ●JPA 1.0 Criteria API 1/3 ● JPA 2.0 ●Démo ●Questions? ● Requetage en objet ● Construction de requêtes dynamiques très aisée ● Voir modification après coup ● 2 modes de création : ● Metamodel ● Réference aux attributsJUG Lyon / oct 2009 Java Persistent API 24
  25. 25. ●Principes ●Historique ●JPA 1.0 Criteria 2/3 ● JPA 2.0 ●Démo ●Questions?En utilisant le metamodel : CriteriaQuery q = qb.create();Root<Customer> cust = q.from(Customer.class);Join<Order, Item> item =cust.join(Customer_.orders).join(Order_.lineitems);q.select(cust.get(Customer_.name)).where(qb.equal(item.get(Item_.product).get(Product_.productType),"printer"));Order est un objet et la correspondance de sa classe dans le metamodel estOrder_JUG Lyon / oct 2009 Java Persistent API 25
  26. 26. ●Principes ●Historique ●JPA 1.0 Criteria 3/3 ● JPA 2.0 ●Démo ●Questions? ● En utilisant les réferences aux attributs :QueryBuilder qb = ...CriteriaQuery q = qb.create();Root<Customer> cust = q.from(Customer.class);Join<Order, Item> item =cust.join("orders").join("lineitems");q.select(cust.get("name")).where(qb.equal(item.get("product").get("productType"),"printer"));JUG Lyon / oct 2009 Java Persistent API 26
  27. 27. ●Principes ●Historique ●JPA 1.0 Cached API ● JPA 2.0 ●Démo ●Questions?@Entity@Table(schema="jpa", name = "participe")@Cacheable(true)public class Participe {Dans persistence.xml : <caching>ALL</caching> ● ALL ● NONE ● ENABLE_SELECTIVE ● DISABLE_SELECTIVEJUG Lyon / oct 2009 Java Persistent API 27
  28. 28. ●Principes ●Historique ●JPA 1.0 Validation ( javax.validation ) ● JPA 2.0 ●Démo ●Questions? ● Optionnel – TraversableResolver accessible par lEntityManager – @valid ● javax.persistence.ValidationMode – Auto ( defaut ) : validation utilisée si présente sans exeception – Callback : validation obligatoire – None ● Completée par la JSR-303 ( Bean validation )JUG Lyon / oct 2009 Java Persistent API 28
  29. 29. ●Principes ●Historique ●JPA 1.0 Autres nouveautés ● JPA 2.0 ●Démo ●Questions? ● Apparition de la méthode ”detach” ●Passe objet en transient ● Changement de signification de la méthode ”remove” ●Supprime les entrées associées en base ● cascade=DETACH ● ValidatorFactory ● Possibilité daccéder au metamodel ( disponible avec hibernate mais pas en JPA1 )JUG Lyon / oct 2009 Java Persistent API 29
  30. 30. ●Principes ●Historique ●JPA 1.0 Implementations disponibles ● JPA 2.0 ●Démo ●Questions? ● OpenJPA2.0 - 12/2009 ( Geronimo / Weblogic ) ● Version déjà disponible et fonctionnelle ( partiel ) ● Hibernate - ( JbossAS-5.2.0.Beta1 - non grand public ) ● preview disponible, non fonctionnelle JPA2 ● Glassfish V3 ( preview était disponible ) ● EclipseLink2.0 11/2009 ● ...JUG Lyon / oct 2009 Java Persistent API 30
  31. 31. Plan ● Principes des Frameworks de persistence ● Historique ● JPA 1.0 ● JPA 2.0 ● Démo ● Questions?JUG Lyon / oct 2009 Java Persistent API 31
  32. 32. ●Principes ●Historique ●JPA 1.0 Démo : architecture ●JPA 2.0 ●Démo ●Questions? JVM1.6 OPENJPA MySQL BasketExampleJUG Lyon / oct 2009 Java Persistent API 32
  33. 33. ●Principes ●Historique ●JPA 1.0 Démo : modèle ●JPA 2.0 ●Démo ●Questions?JUG Lyon / oct 2009 Java Persistent API 33
  34. 34. ●Principes ●Historique ●JPA 1.0 Pour aller plus loin ●JPA 2.0 ●Demo ●Questions?References : ● JSR 220: Enterprise JavaBeansTM,Version 3.0 ● JSR 317: JavaTM Persistence API, Version 2.0Outils : ● OpenJPA: http:/ openjpa.apache.org/ /Articles sur JPA : ● Initiation : Java Persistence API : Persistance universelle – linuxdevjournal – Perez N. ● Avancé : http://java.sun.com/javaee/5/docs/tutorial/doc/bnbpz.htmlJUG Lyon / oct 2009 Java Persistent API 34
  35. 35. A vous de jouer : Question?JUG Lyon / oct 2009 Java Persistent API 35

×