Maison > Java > javaDidacticiel > Comment résoudre le problème N 1 dans JPA et Hibernate ?

Comment résoudre le problème N 1 dans JPA et Hibernate ?

Mary-Kate Olsen
Libérer: 2024-11-14 18:54:02
original
732 Les gens l'ont consulté

How to Solve the N 1 Problem in JPA and Hibernate?

Résoudre le problème N 1 dans JPA et Hibernate

Le problème N 1 survient lorsque des requêtes excessives sont exécutées pour récupérer des données relationnelles. Par exemple, dans Hibernate, une requête initiale récupère N enregistrements, et N requêtes supplémentaires sont nécessaires pour récupérer les enregistrements associés à chacun.

Pour résoudre ce problème, utilisez JOIN FETCH :

List<PostComment> comments = entityManager.createQuery(
    "select pc from PostComment pc join fetch pc.post p where pc.review = :review"
)
.setParameter("review", review)
.getResultList();
Copier après la connexion

Ce JOIN FETCH récupère avec impatience l'association de publication, en éliminant les requêtes N 1.

Si plusieurs associations enfants doivent être récupérées, récupérez une collection dans la requête initiale et les autres avec les requêtes suivantes.

Détection automatique

Les tests d'intégration sont idéaux pour détecter le problème N 1. Le projet db-util fournit une assertion JUnit automatique pour valider le nombre attendu d'instructions SQL générées :

@Test
public void shouldNotHaveANPlusOneQuery() {
    // code to configure and execute db-util

    Assert.assertCountOfSqlStatementsPerformed(1);
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal