Hibernate-reactive: session.remove && session.getReference

Créé le 7 sept. 2020  ·  3Commentaires  ·  Source: hibernate/hibernate-reactive

Bonjour, si j'ai bien compris, après jpa, il n'y a qu'une seule façon de supprimer l'entité détachée :

factory.withTransaction((session, transaction) -> 
    session.merge(sampleEntity).invokeUni(session::remove)
).await().indefinitely();

Tout va bien, mais s'il s'agit de performances, l'opération de fusion prend beaucoup de temps et peut causer de réels problèmes de performances. Par exemple, selon mes mesures de temps inexactes, la suppression de 5000 entités prend environ 4s, en veille prolongée, cela prend 50ms.

Je viens de lire une nouvelle méthode appelée session.getReference qui renvoie l'instance persistante d'une entité donnée. Est-il possible d'autoriser son utilisation pour session.remove ?

bug

Tous les 3 commentaires

Je viens de lire une nouvelle méthode appelée session.getReference qui renvoie l'instance persistante d'une entité donnée. Est-il possible d'autoriser son utilisation pour session.remove ?

Ah, bon point, vous devriez absolument pouvoir le faire. Je l'ai fait fonctionner dans #360.

Cependant, je veux que vous compreniez qu'il n'y a aucun moyen de remove() un objet sans le récupérer d'abord. C'est parce que remove() a une sémantique comme la suppression en cascade et la suppression de collection qui dépendent de l'état de l'entité dans la session.

Si vous devez absolument pouvoir supprimer une entité sans la récupérer, vous devez utiliser StatelessSession.delete() ou une requête HQL delete .

@Xset-s PS merci d'avoir signalé cela, c'était un gros oubli de ma part

Pas de problème, merci pour votre réponse détaillée sur la suppression de l'opération et pour une solution très rapide. Je mène des expériences en ce moment et je réécris mon application côté serveur à l'aide de votre nouvelle bibliothèque incroyable.

Cette page vous a été utile?
0 / 5 - 0 notes