devoxx 15
Post on 16-Jul-2015
371 Views
Preview:
TRANSCRIPT
@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
23
• 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
@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
top related