@blep#DevoxxFrJpa
JDBC / JPA / Hibernate: Sans
maîtrise la puissance n’est rien!
Brice LEPORINI
@blep
Indépendant
http://t...
@blep#DevoxxFrJpa
Présentation
• JDBC: Interface d’échange avec les SGBD
• Hibernate: ORM, né en 2002 des frustrations des...
@blep#DevoxxFrJpa
JPA: Recette de base
<persistence
<
<
<
value=
<
<
value=
<
<
<
value=
</
</
</persistence
@Entity
@Gett...
@blep#DevoxxFrJpa
Pourquoi revenir dessus en 2015?
• Technologie largement utilisée dans les applications Java
• Extrêmeme...
@blep#DevoxxFrJpa
Cache L1
• Ou cache de session
• Scalabilité!
• Attention au cache obsolète entre les sessions:
• Sessio...
@blep#DevoxxFrJpa
N+1 @OneToOne
• Java ne permet pas de «proxifier» la valeur null
• Le choix de la propriété (ownership) d...
@blep#DevoxxFrJpa
Interrogation
• Inline: Jamais (ou tests)
• Named Queries / Repo Spring Data: requêtes statiques
• API C...
@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 Hibe...
Prochain SlideShare
Chargement dans…5
×

Devoxx 15

1 239 vues

Publié le

Publié dans : Données & analyses
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 239
Sur SlideShare
0
Issues des intégrations
0
Intégrations
66
Actions
Partages
0
Téléchargements
23
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Devoxx 15

  1. 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. 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. 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. 4. @blep#DevoxxFrJpa Pourquoi revenir dessus en 2015? • Technologie largement utilisée dans les applications Java • Extrêmement rarement maîtrisée...
  5. 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. 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. 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
  8. 8. @YourTwitterHandle@YourTwitterHandle@blep#DevoxxFrJpa Sans maitrise la puissance n’est rien!
  9. 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

×