Maison >Java >javaDidacticiel >Comment rendre les relations JPA OneToOne paresseuses ?
Face à des opérations de base de données lentes, vous avez tracé le problème était de récupérer avec impatience les relations OneToOne avec des hiérarchies d'entités profondes, provoquant des jointures excessives dans les requêtes. Malheureusement, les tentatives d'annotation de @OneToOne(fetch = FetchType.LAZY) ou @ManyToOne(fetch = FetchType.LAZY) se sont révélées vaines.
@ManyToOne(récupérer = FetchType.LAZY) devrait fonctionner comme prévu. Vérifiez à nouveau les remplacements dans les requêtes HQL ou les modes de récupération de l'API Criteria qui pourraient remplacer les annotations de classe. Si le problème persiste, fournissez des exemples de code pour une analyse plus approfondie.
@OneToOne est plus nuancé. Si la relation n'est pas nullable, spécifiez-la comme suit :
@OneToOne(optional = false, fetch = FetchType.LAZY)
Pour les relations nullables, envisagez les approches suivantes :
Ajout d'une clé étrangère Colonne : Ajoutez une colonne de clé étrangère à la table propriétaire et mappez la relation comme "joined":
@OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "other_entity_fk") public OtherEntity getOther();
@OneToOne(mappedBy = "other") public OwnerEntity getOwner();
Bien que la récupération différée puisse atténuer les problèmes de performances, procédez avec prudence. Dans les cas où de nombreuses relations OneToOne enthousiastes conduisent à des jointures excessives, envisagez de résoudre les problèmes structurels sous-jacents dans le modèle de données ou les relations entre entités.
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!