SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
@blep#DevoxxFrJpa
JDBC / JPA / Hibernate: Sans
maîtrise la puissance n’est rien!
Brice LEPORINI
@blep
Indépendant
http://the-babel-tower.github.io/
@blep#DevoxxFrJpa
Présentation
• JDBC: Interface d’échange avec les SGBD
• Hibernate: ORM, né en 2002 des frustrations des EJB2 entities
• JPA: Spécification du JCP. Hibernate implémente JPA.
@blep#DevoxxFrJpa
JPA: Recette de base
<persistence
<
<
<
value=
<
<
value=
<
<
<
value=
</
</
</persistence
@Entity
@Getter @Setter
@EqualsAndHashCode(exclude =
public class
@Id
@Column(unique =
}
EntityManagerFactory emf =
Persistence.createEntityManagerFactory(
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
final
user.setName(
em.getTransaction().commit();
1
2
3
• Verser 50g de configuration XML dans META-INF
• Délayer 40g d’annotation dans chaque POJO pour
le mappage
• Mettre une implémentation dans le Class Path
• Démarrer l’unité de persistance pour faire prendre
le tout
• C’est prêt!
@blep#DevoxxFrJpa
Pourquoi revenir dessus en 2015?
• Technologie largement utilisée dans les applications Java
• Extrêmement rarement maîtrisée...
@blep#DevoxxFrJpa
Cache L1
• Ou cache de session
• Scalabilité!
• Attention au cache obsolète entre les sessions:
• Sessions longues (batches, Stateful)
• Transactions indépendantes:
Tx REQUIRED[ ... Tx REQUIRES_NEW [ ..... ] .... ]
@blep#DevoxxFrJpa
N+1 @OneToOne
• Java ne permet pas de «proxifier» la valeur null
• Le choix de la propriété (ownership) de la relation est donc
primordial
• Alternatives
• Fusion
• Héritage
•@Embeddable
@blep#DevoxxFrJpa
Interrogation
• Inline: Jamais (ou tests)
• Named Queries / Repo Spring Data: requêtes statiques
• API Criteria:
• Non typée: Jamais
• Meta-modèle: Requêtes construites dynamiquement
@YourTwitterHandle@YourTwitterHandle@blep#DevoxxFrJpa
Sans maitrise la puissance n’est rien!
@blep#DevoxxFrJpa
Références
• JSR 338: JavaTM Persistence 2.1: https://jcp.org/en/jsr/detail?
id=338
• Documentation Hibernate http://hibernate.org/orm/
documentation/
• Patrycja Wegrzynowicz: Performance Anti-Patterns in
Hibernate: https://parleys.com/play/514892290364bc17fc56c48b
• Ippon :Formation JPA Avancé / Hibernate http://
fr.slideshare.net/ippontech/jpa-avanc-hibernate

Contenu connexe

Tendances

Tendances (20)

Soutenance Stage Licence
Soutenance Stage LicenceSoutenance Stage Licence
Soutenance Stage Licence
 
Presentation hibernate nfe103
Presentation hibernate nfe103Presentation hibernate nfe103
Presentation hibernate nfe103
 
4 Hibernate
4 Hibernate4 Hibernate
4 Hibernate
 
Hibernate
HibernateHibernate
Hibernate
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Hibernate
HibernateHibernate
Hibernate
 
Presentation Spring
Presentation SpringPresentation Spring
Presentation Spring
 
Hibernate et jsf
Hibernate et jsfHibernate et jsf
Hibernate et jsf
 
CDI mis en pratique avec Seam Social et Weld OSGI
CDI mis en pratique avec Seam Social et Weld OSGICDI mis en pratique avec Seam Social et Weld OSGI
CDI mis en pratique avec Seam Social et Weld OSGI
 
Hibernate
HibernateHibernate
Hibernate
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
Presentation JPA
Presentation JPAPresentation JPA
Presentation JPA
 
Hibernate 3
Hibernate 3Hibernate 3
Hibernate 3
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Support cours j2_ee
Support cours j2_eeSupport cours j2_ee
Support cours j2_ee
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
ParisJUG Spring Boot
ParisJUG Spring BootParisJUG Spring Boot
ParisJUG Spring Boot
 
Aperçu de java EE 5
Aperçu de java EE 5Aperçu de java EE 5
Aperçu de java EE 5
 

En vedette

Chtijug springbatch 2011
Chtijug springbatch 2011Chtijug springbatch 2011
Chtijug springbatch 2011Olivier BAZOUD
 
Breizhcamp : Guide de survie du développeur dans une application (Java) qui rame
Breizhcamp : Guide de survie du développeur dans une application (Java) qui rameBreizhcamp : Guide de survie du développeur dans une application (Java) qui rame
Breizhcamp : Guide de survie du développeur dans une application (Java) qui ramebleporini
 
Perfug Guide de survie du développeur dans une application Java qui rame
Perfug Guide de survie du développeur dans une application Java qui ramePerfug Guide de survie du développeur dans une application Java qui rame
Perfug Guide de survie du développeur dans une application Java qui ramebleporini
 
Malakocktail 72 (été 2013)
Malakocktail 72 (été 2013)Malakocktail 72 (été 2013)
Malakocktail 72 (été 2013)Malakocktail
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéJulien Dubois
 
Accessibilité & e-recrutement
Accessibilité & e-recrutementAccessibilité & e-recrutement
Accessibilité & e-recrutementSébastien Delorme
 
DevFest Nantes 2016 - Spinnaker
DevFest Nantes 2016 - SpinnakerDevFest Nantes 2016 - Spinnaker
DevFest Nantes 2016 - SpinnakerStephan Lagraulet
 
20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You ReadyGeoffray Gruel
 
Nouveau look pour une nouvelle vie, version spéciale Ippon
Nouveau look pour une nouvelle vie, version spéciale IpponNouveau look pour une nouvelle vie, version spéciale Ippon
Nouveau look pour une nouvelle vie, version spéciale IpponJulien Dubois
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à CassandraVMware Tanzu
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéJulien Dubois
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairAlexis Seigneurin
 
L'atelier e-Recrutement 2.0 (3eme partie)
L'atelier e-Recrutement 2.0 (3eme partie)L'atelier e-Recrutement 2.0 (3eme partie)
L'atelier e-Recrutement 2.0 (3eme partie)Patrice Malaurie
 
L'atelier e-Recrutement 2.0 (1ère partie)
L'atelier e-Recrutement 2.0 (1ère partie)L'atelier e-Recrutement 2.0 (1ère partie)
L'atelier e-Recrutement 2.0 (1ère partie)Patrice Malaurie
 
Annonces du french scrum user group v1.2
Annonces du french scrum user group   v1.2Annonces du french scrum user group   v1.2
Annonces du french scrum user group v1.2Xavier Warzee
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open SourceIppon
 
Agile Tour Nantes 2011 - Bertrand pinel les projets au forfait - scrum but....
Agile Tour Nantes 2011 - Bertrand pinel   les projets au forfait - scrum but....Agile Tour Nantes 2011 - Bertrand pinel   les projets au forfait - scrum but....
Agile Tour Nantes 2011 - Bertrand pinel les projets au forfait - scrum but....Association Agile Nantes
 

En vedette (20)

Chtijug springbatch 2011
Chtijug springbatch 2011Chtijug springbatch 2011
Chtijug springbatch 2011
 
Breizhcamp : Guide de survie du développeur dans une application (Java) qui rame
Breizhcamp : Guide de survie du développeur dans une application (Java) qui rameBreizhcamp : Guide de survie du développeur dans une application (Java) qui rame
Breizhcamp : Guide de survie du développeur dans une application (Java) qui rame
 
Perfug Guide de survie du développeur dans une application Java qui rame
Perfug Guide de survie du développeur dans une application Java qui ramePerfug Guide de survie du développeur dans une application Java qui rame
Perfug Guide de survie du développeur dans une application Java qui rame
 
Pierre et Alexandre
Pierre et AlexandrePierre et Alexandre
Pierre et Alexandre
 
Malakocktail 72 (été 2013)
Malakocktail 72 (été 2013)Malakocktail 72 (été 2013)
Malakocktail 72 (été 2013)
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
 
Accessibilité & e-recrutement
Accessibilité & e-recrutementAccessibilité & e-recrutement
Accessibilité & e-recrutement
 
DevFest Nantes 2016 - Spinnaker
DevFest Nantes 2016 - SpinnakerDevFest Nantes 2016 - Spinnaker
DevFest Nantes 2016 - Spinnaker
 
20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready
 
Nouveau look pour une nouvelle vie, version spéciale Ippon
Nouveau look pour une nouvelle vie, version spéciale IpponNouveau look pour une nouvelle vie, version spéciale Ippon
Nouveau look pour une nouvelle vie, version spéciale Ippon
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à Cassandra
 
De Devoxx au CAC40
De Devoxx au CAC40De Devoxx au CAC40
De Devoxx au CAC40
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilité
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclair
 
L'atelier e-Recrutement 2.0 (3eme partie)
L'atelier e-Recrutement 2.0 (3eme partie)L'atelier e-Recrutement 2.0 (3eme partie)
L'atelier e-Recrutement 2.0 (3eme partie)
 
L'atelier e-Recrutement 2.0 (1ère partie)
L'atelier e-Recrutement 2.0 (1ère partie)L'atelier e-Recrutement 2.0 (1ère partie)
L'atelier e-Recrutement 2.0 (1ère partie)
 
Annonces du french scrum user group v1.2
Annonces du french scrum user group   v1.2Annonces du french scrum user group   v1.2
Annonces du french scrum user group v1.2
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open Source
 
Agile Tour Nantes 2011 - Bertrand pinel les projets au forfait - scrum but....
Agile Tour Nantes 2011 - Bertrand pinel   les projets au forfait - scrum but....Agile Tour Nantes 2011 - Bertrand pinel   les projets au forfait - scrum but....
Agile Tour Nantes 2011 - Bertrand pinel les projets au forfait - scrum but....
 

Similaire à Devoxx 15

#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart ClientGuillaume Sauthier
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystémeAlgeria JUG
 
Backday xebia - Chercher la performance efficacement
Backday xebia - Chercher la performance efficacement Backday xebia - Chercher la performance efficacement
Backday xebia - Chercher la performance efficacement Publicis Sapient Engineering
 
Présentation de JavaServer Faces
Présentation de JavaServer FacesPrésentation de JavaServer Faces
Présentation de JavaServer FacesJS Bournival
 
Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Mejdeddine Bouzouita
 
Gatling Tool in Action at DevoxxFR 2012
Gatling Tool in Action at DevoxxFR 2012Gatling Tool in Action at DevoxxFR 2012
Gatling Tool in Action at DevoxxFR 2012slandelle
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EEInes Ouaz
 
Et pourquoi pas JEE ?
Et pourquoi pas JEE ?Et pourquoi pas JEE ?
Et pourquoi pas JEE ?PALO IT
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Jérôme Tamborini
 
Java 5, un blian
Java 5, un blianJava 5, un blian
Java 5, un bliantareq
 
Java 5, un bilan
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilanteejug
 
Formation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-dataFormation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-dataLhouceine OUHAMZA
 

Similaire à Devoxx 15 (20)

#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart Client
 
2
22
2
 
Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
 
Ejb3 2-session-beans fr
Ejb3 2-session-beans frEjb3 2-session-beans fr
Ejb3 2-session-beans fr
 
Backday xebia - Chercher la performance efficacement
Backday xebia - Chercher la performance efficacement Backday xebia - Chercher la performance efficacement
Backday xebia - Chercher la performance efficacement
 
Presentation jsf2
Presentation jsf2Presentation jsf2
Presentation jsf2
 
Présentation de JavaServer Faces
Présentation de JavaServer FacesPrésentation de JavaServer Faces
Présentation de JavaServer Faces
 
Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124Prsentation de-javaserver-faces4124
Prsentation de-javaserver-faces4124
 
Javavs net
Javavs netJavavs net
Javavs net
 
Gatling Tool in Action at DevoxxFR 2012
Gatling Tool in Action at DevoxxFR 2012Gatling Tool in Action at DevoxxFR 2012
Gatling Tool in Action at DevoxxFR 2012
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Et pourquoi pas JEE ?
Et pourquoi pas JEE ?Et pourquoi pas JEE ?
Et pourquoi pas JEE ?
 
Play 2: java et scala
Play 2: java et scalaPlay 2: java et scala
Play 2: java et scala
 
Java 11 to 17 : What's new !?
Java 11 to 17 : What's new !?Java 11 to 17 : What's new !?
Java 11 to 17 : What's new !?
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)
 
Java 5, un blian
Java 5, un blianJava 5, un blian
Java 5, un blian
 
Java 5, un bilan
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilan
 
Formation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-dataFormation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-data
 

Dernier

Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...
Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...
Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...France Travail
 
Bidirectional Encoder Representations from Transformers
Bidirectional Encoder Representations from TransformersBidirectional Encoder Representations from Transformers
Bidirectional Encoder Representations from Transformersbahija babzine
 
Les Français, l'Europe et Emmanuel Macron
Les Français, l'Europe et Emmanuel MacronLes Français, l'Europe et Emmanuel Macron
Les Français, l'Europe et Emmanuel Macroncontact Elabe
 
Le contrôle de la recherche d'emploi en 2023
Le contrôle de la recherche d'emploi en 2023Le contrôle de la recherche d'emploi en 2023
Le contrôle de la recherche d'emploi en 2023France Travail
 
ELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel Attal
ELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel AttalELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel Attal
ELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel Attalcontact Elabe
 
To_understand_transformers_together presentation
To_understand_transformers_together presentationTo_understand_transformers_together presentation
To_understand_transformers_together presentationbahija babzine
 
Recurrent neural network_PresentationRNN.pptx
Recurrent neural network_PresentationRNN.pptxRecurrent neural network_PresentationRNN.pptx
Recurrent neural network_PresentationRNN.pptxbahija babzine
 

Dernier (7)

Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...
Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...
Montant moyen du droit d'allocation chômage versé aux demandeurs d'emploi ind...
 
Bidirectional Encoder Representations from Transformers
Bidirectional Encoder Representations from TransformersBidirectional Encoder Representations from Transformers
Bidirectional Encoder Representations from Transformers
 
Les Français, l'Europe et Emmanuel Macron
Les Français, l'Europe et Emmanuel MacronLes Français, l'Europe et Emmanuel Macron
Les Français, l'Europe et Emmanuel Macron
 
Le contrôle de la recherche d'emploi en 2023
Le contrôle de la recherche d'emploi en 2023Le contrôle de la recherche d'emploi en 2023
Le contrôle de la recherche d'emploi en 2023
 
ELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel Attal
ELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel AttalELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel Attal
ELABE BFMTV L'Opinion en direct - Les Français et les 100 jours de Gabriel Attal
 
To_understand_transformers_together presentation
To_understand_transformers_together presentationTo_understand_transformers_together presentation
To_understand_transformers_together presentation
 
Recurrent neural network_PresentationRNN.pptx
Recurrent neural network_PresentationRNN.pptxRecurrent neural network_PresentationRNN.pptx
Recurrent neural network_PresentationRNN.pptx
 

Devoxx 15

  • 1. @blep#DevoxxFrJpa JDBC / JPA / Hibernate: Sans maîtrise la puissance n’est rien! Brice LEPORINI @blep Indépendant http://the-babel-tower.github.io/
  • 2. @blep#DevoxxFrJpa Présentation • JDBC: Interface d’échange avec les SGBD • Hibernate: ORM, né en 2002 des frustrations des EJB2 entities • JPA: Spécification du JCP. Hibernate implémente JPA.
  • 3. @blep#DevoxxFrJpa JPA: Recette de base <persistence < < < value= < < value= < < < value= </ </ </persistence @Entity @Getter @Setter @EqualsAndHashCode(exclude = public class @Id @Column(unique = } EntityManagerFactory emf = Persistence.createEntityManagerFactory( EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); final user.setName( em.getTransaction().commit(); 1 2 3 • Verser 50g de configuration XML dans META-INF • Délayer 40g d’annotation dans chaque POJO pour le mappage • Mettre une implémentation dans le Class Path • Démarrer l’unité de persistance pour faire prendre le tout • C’est prêt!
  • 4. @blep#DevoxxFrJpa Pourquoi revenir dessus en 2015? • Technologie largement utilisée dans les applications Java • Extrêmement rarement maîtrisée...
  • 5. @blep#DevoxxFrJpa Cache L1 • Ou cache de session • Scalabilité! • Attention au cache obsolète entre les sessions: • Sessions longues (batches, Stateful) • Transactions indépendantes: Tx REQUIRED[ ... Tx REQUIRES_NEW [ ..... ] .... ]
  • 6. @blep#DevoxxFrJpa N+1 @OneToOne • Java ne permet pas de «proxifier» la valeur null • Le choix de la propriété (ownership) de la relation est donc primordial • Alternatives • Fusion • Héritage •@Embeddable
  • 7. @blep#DevoxxFrJpa Interrogation • Inline: Jamais (ou tests) • Named Queries / Repo Spring Data: requêtes statiques • API Criteria: • Non typée: Jamais • Meta-modèle: Requêtes construites dynamiquement
  • 9. @blep#DevoxxFrJpa Références • JSR 338: JavaTM Persistence 2.1: https://jcp.org/en/jsr/detail? id=338 • Documentation Hibernate http://hibernate.org/orm/ documentation/ • Patrycja Wegrzynowicz: Performance Anti-Patterns in Hibernate: https://parleys.com/play/514892290364bc17fc56c48b • Ippon :Formation JPA Avancé / Hibernate http:// fr.slideshare.net/ippontech/jpa-avanc-hibernate