Je suis encore un peu indécis, ce qui est la meilleure pratique pour gérer em.remove(entity)
avec cette entité étant dans plusieurs collections mappées en utilisant mappedBy
en JPA.Meilleure pratique lors de la suppression d'une entité concernant des collections mappedBy?
Tenir compte d'une entité comme un Property
qui fait référence à trois autres entités: un Descriptor
, une BusinessObject
et une entité Level
. Le mappage est défini à l'aide de @ManyToOne
dans l'entité Property et en utilisant @OneToMany(mappedBy...)
dans les trois autres objets. Ce mappage inverse est défini car il existe certaines situations dans lesquelles j'ai besoin d'accéder à ces collections.
Chaque fois que je supprime une propriété à l'aide de em.remove(prop)
, cet élément n'est pas automatiquement supprimé des entités gérées des trois autres types. Si je m'en fiche et que le chargement de la page suivante (webapp) ne recharge pas ces entités, la propriété est toujours trouvée et certaines décisions qui ne sont plus vraies peuvent être prises. Les mappages inverses peuvent devenir assez volumineux et je ne veux pas utiliser quelque chose comme descriptor.getProperties().remove(prop)
car il va charger toutes les propriétés qui ont pu être chargées paresseux jusque là. Donc, mon moyen actuellement préféré est de rafraîchir l'entité si elle est gérée: if (em.contains(descriptor)) em.refresh(descriptor)
- qui décharge une collection éventuellement chargée et déclenche un rechargement lors de l'accès suivant.
Existe-t-il un autre moyen pratique de gérer toutes les collections mappedBy d'entites déjà chargées?
Merci pour vos pensées. L'utilisation des événements de persistance peut être un peu difficile pour moi car mon modèle ne se réfère pas à un gestionnaire d'entité lui-même et est utilisé dans un contexte Seam - la méthode d'actualisation pourrait ne pas fonctionner de cette façon. Et le add()/remove() sur les collections associées sera trop cher pour les grandes collections. –
J'ai accepté la solution car elle approuve plus ou moins ma mise en œuvre actuelle. L'idée avec les événements de persistance est agréable et utile dans certains cas. –