Java Persistent API



Auteur : PEREZ Noël
        nperez@hinnoya.fr
Date : Octobre 2009
Plan
 ●   Principes des Frameworks de persistence
 ●   Historique
 ●   JPA 1.0
 ●   JPA 2.0
 ●   Demo
 ●   Questions?



JUG Lyon / oct 2009   Java Persistent API      2
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.net
JUG Lyon / oct 2009          Java Persistent API                       3
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étier




JUG Lyon / oct 2009                           Java Persistent API                               4
Plan
 ●   Principes des Frameworks de persistence
 ●   Historique
 ●   JPA 1.0
 ●   JPA 2.0
 ●   Démo
 ●   Questions?




JUG Lyon / oct 2009   Java Persistent API      5
●
                                                    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 table

JUG Lyon / oct 2009          Java Persistent API          6
●
                                                     Principes
                                                    ●Historique
                                                    ●JPA 1.0



                      Problème gestion JDBC         ●JPA 2.0

                                                    ●Démo

                                                    ●Questions?




 ●   Besoin d'experts 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 d'une
     application.
JUG Lyon / oct 2009           Java Persistent API          7
●
                                                               Principes
                                                              ●Historique
                                                              ●JPA 1.0



                         Couches                              ●JPA 2.0

                                                              ●Démo

                                                              ●Questions?




                                  Utilisateurs



                        Couche interface utilisateur ( UI )

                                 Couche métier

                      Couche d'accès aux données ( DAO )




                             Couche de persistence




                                      JDBC



                             Base de données




JUG Lyon / oct 2009             Java Persistent API                  8
●
                                                  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
●
                                                         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ées
JUG Lyon / oct 2009               Java Persistent API         10
Plan
 ●   Principes des Frameworks de persistence
 ●   Historique
 ●   JPA 1.0
 ●   JPA 2.0
 ●   Démo
 ●   Questions?




JUG Lyon / oct 2009      Java Persistent API   11
●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.0


JUG Lyon / oct 2009                         Java Persistent API                                12
●Principes
                                                  ●Historique
                                                  ●JPA 1.0



                      Participant JSR 317         ●JPA 2.0

                                                  ●Démo

                                                  ●Questions?




JUG Lyon / oct 2009         Java Persistent API         13
Plan
 ●   Principes des Frameworks de persistence
 ●   Historique
 ●   JPA 1.0
 ●   JPA 2.0
 ●   Demo
 ●   Questions?




JUG Lyon / oct 2009      Java Persistent API   14
●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 d'accès aux données ( DAO )

             Appel aux fonctions de persistance              Objets persistants

                                            JPA                                      Ajout dans le code de l'application des
                                                                                     sauvegardes, chargement ou requete
                              Hibernate/OpenJPA/TopLink/...                          vers les objets persistant

                                           JDBC



                                  Base de données




JUG Lyon / oct 2009                                            Java Persistent API                                                   15
●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
●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
●Principes
                                                        ●Historique
                                                        ●JPA 1.0



                      Injections 2/2                    ●JPA 2.0

                                                        ●Démo

                                                        ●Questions?




 ●   Tient compte de l'héritage
      ●   Les injections classe mère en dernier
      ●   Possible de désactiver les appels de la classe mère
 ●   Tient compte de l'ordre dans le fichier ( même
     injection présente plusieurs fois )




JUG Lyon / oct 2009         Java Persistent API               18
●Principes
                                              ●Historique
                                              ●JPA 1.0



                      Requetage               ●JPA 2.0

                                              ●Démo

                                              ●Questions?




 ●   SQL

 ●   JPQL

select distinct joueur
from Club club,
  Personne joueur
where joueur member of club.organisateurs

JUG Lyon / oct 2009     Java Persistent API         19
●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 d'objet




JUG Lyon / oct 2009       Java Persistent API         20
●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
Plan
 ●   Principes des Frameworks de persistence
 ●   Historique
 ●   JPA 1.0
 ●   JPA 2.0
 ●   Démo
 ●   Questions?




JUG Lyon / oct 2009      Java Persistent API   22
●Principes
                                                    ●Historique
                                                    ●JPA 1.0



                          JPQL                      ●
                                                     JPA 2.0
                                                    ●Démo

                                                    ●Questions?




           Aucune nouveauté depuis la version 1.0




JUG Lyon / oct 2009       Java Persistent API             23
●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 attributs


JUG Lyon / oct 2009         Java Persistent API         24
●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 est
Order_
JUG Lyon / oct 2009            Java Persistent API                       25
●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
●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_SELECTIVE
JUG Lyon / oct 2009        Java Persistent API         27
●Principes
                                                                           ●Historique
                                                                           ●JPA 1.0



            Validation ( javax.validation )                                ●
                                                                            JPA 2.0
                                                                           ●Démo

                                                                           ●Questions?




 ●   Optionnel
            –   TraversableResolver accessible par l'EntityManager
            –   @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
●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é d'accéder au metamodel ( disponible avec
     hibernate mais pas en JPA1 )


JUG Lyon / oct 2009        Java Persistent API              29
●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
Plan
 ●   Principes des Frameworks de persistence
 ●   Historique
 ●   JPA 1.0
 ●   JPA 2.0
 ●   Démo
 ●   Questions?




JUG Lyon / oct 2009      Java Persistent API   31
●Principes
                                                                    ●Historique
                                                                    ●JPA 1.0



                       Démo : architecture                          ●JPA 2.0

                                                                    ●Démo

                                                                    ●Questions?




             JVM1.6

               OPENJPA
                                                            MySQL
                      BasketExample




JUG Lyon / oct 2009                   Java Persistent API                 32
●Principes
                                                ●Historique
                                                ●JPA 1.0



                      Démo : modèle             ●JPA 2.0

                                                ●Démo

                                                ●Questions?




JUG Lyon / oct 2009       Java Persistent API         33
●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.0
Outils :
      ●   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.html

JUG Lyon / oct 2009               Java Persistent API                           34
A vous de jouer :

                         Question?




JUG Lyon / oct 2009       Java Persistent API   35

20091020 JPA2

  • 1.
    Java Persistent API Auteur: PEREZ Noël nperez@hinnoya.fr Date : Octobre 2009
  • 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.
    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.net JUG Lyon / oct 2009 Java Persistent API 3
  • 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étier JUG Lyon / oct 2009 Java Persistent API 4
  • 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.
    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 table JUG Lyon / oct 2009 Java Persistent API 6
  • 7.
    Principes ●Historique ●JPA 1.0 Problème gestion JDBC ●JPA 2.0 ●Démo ●Questions? ● Besoin d'experts 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 d'une application. JUG Lyon / oct 2009 Java Persistent API 7
  • 8.
    Principes ●Historique ●JPA 1.0 Couches ●JPA 2.0 ●Démo ●Questions? Utilisateurs Couche interface utilisateur ( UI ) Couche métier Couche d'accès aux données ( DAO ) Couche de persistence JDBC Base de données JUG Lyon / oct 2009 Java Persistent API 8
  • 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.
    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ées JUG Lyon / oct 2009 Java Persistent API 10
  • 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.
    ●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.0 JUG Lyon / oct 2009 Java Persistent API 12
  • 13.
    ●Principes ●Historique ●JPA 1.0 Participant JSR 317 ●JPA 2.0 ●Démo ●Questions? JUG Lyon / oct 2009 Java Persistent API 13
  • 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.
    ●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 d'accès aux données ( DAO ) Appel aux fonctions de persistance Objets persistants JPA Ajout dans le code de l'application des sauvegardes, chargement ou requete Hibernate/OpenJPA/TopLink/... vers les objets persistant JDBC Base de données JUG Lyon / oct 2009 Java Persistent API 15
  • 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.
    ●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.
    ●Principes ●Historique ●JPA 1.0 Injections 2/2 ●JPA 2.0 ●Démo ●Questions? ● Tient compte de l'héritage ● Les injections classe mère en dernier ● Possible de désactiver les appels de la classe mère ● Tient compte de l'ordre dans le fichier ( même injection présente plusieurs fois ) JUG Lyon / oct 2009 Java Persistent API 18
  • 19.
    ●Principes ●Historique ●JPA 1.0 Requetage ●JPA 2.0 ●Démo ●Questions? ● SQL ● JPQL select distinct joueur from Club club, Personne joueur where joueur member of club.organisateurs JUG Lyon / oct 2009 Java Persistent API 19
  • 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 d'objet JUG Lyon / oct 2009 Java Persistent API 20
  • 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.
    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.
    ●Principes ●Historique ●JPA 1.0 JPQL ● JPA 2.0 ●Démo ●Questions? Aucune nouveauté depuis la version 1.0 JUG Lyon / oct 2009 Java Persistent API 23
  • 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 attributs JUG Lyon / oct 2009 Java Persistent API 24
  • 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 est Order_ JUG Lyon / oct 2009 Java Persistent API 25
  • 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.
    ●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_SELECTIVE JUG Lyon / oct 2009 Java Persistent API 27
  • 28.
    ●Principes ●Historique ●JPA 1.0 Validation ( javax.validation ) ● JPA 2.0 ●Démo ●Questions? ● Optionnel – TraversableResolver accessible par l'EntityManager – @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.
    ●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é d'accéder au metamodel ( disponible avec hibernate mais pas en JPA1 ) JUG Lyon / oct 2009 Java Persistent API 29
  • 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.
    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.
    ●Principes ●Historique ●JPA 1.0 Démo : architecture ●JPA 2.0 ●Démo ●Questions? JVM1.6 OPENJPA MySQL BasketExample JUG Lyon / oct 2009 Java Persistent API 32
  • 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.
    ●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.0 Outils : ● 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.html JUG Lyon / oct 2009 Java Persistent API 34
  • 35.
    A vous dejouer : Question? JUG Lyon / oct 2009 Java Persistent API 35