Si vous avez vraiment beaucoup d'entités mappées ensemble, cela pourrait en effet conduire à un problème de performances. Ce sera généralement le cas si vous avez beaucoup de @OneToMany
ou @ManyToMany
applications:
@Entity
public class A {
@OneToMany
private List<B> listB;
@ManyToMany
private List<C> listC;
@OneToMany
private List<D> listD;
...
}
Cependant une chose que vous pourriez faire, utilise le chargement tardif. Cela signifie que le chargement d'un champ peut être retardé jusqu'à ce qu'il soit accédé pour la première fois. Vous pouvez le faire en utilisant l'attribut fetch
:
@Entity
public class A {
@OneToMany(fetch=FetchType.LAZY)
private List<B> listB;
@ManyToMany(fetch=FetchType.LAZY)
private List<C> listC;
@OneToMany(fetch=FetchType.LAZY)
private List<D> listD;
...
}
Dans l'exemple ci-dessus, cela signifie listeB, listC, listd ne sera pas tiré par les cheveux de la DB jusqu'à ce que le premier accès à la liste.
L'implémentation concrète de la récupération différée dépend de votre fournisseur JPA.
Par productivité, vous voulez dire performance, n'est-ce pas? – flash
Oui, la performance –