Devoxx 15

1 201 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 201
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

×