Question

Je développe un client-serveur d'application avec Hibernate en tant que couche de persistance et Jersey REST pour la communication réseau.

Étant donné un utilisateur avec des rôles:

  1. quand je veux afficher tous les utilisateurs du client, je ne veux pas les rôles à charger par Hibernate et je ne veux pas qu'ils soient envoyés sur le réseau
  2. quand je veux modifier les rôles de l'utilisateur, je veux qu'ils soient chargés et à transférer

J'utilise un modèle de préchargement ( http: // bwinterberg .blogspot.com / 2009/09 / hibernate-précharge-pattern.html ), afin de déterminer les propriétés doivent être chargées par Hibernate. Cela fonctionne très bien.

Dans le cas 1, aucun rôle sont chargés par Hibernate, tout comme prévu. Mais dès Jersey crée le XML à envoyer au client, il lit les rôles de l'utilisateur, ce qui permet de charger Hibernate les rôles (et toutes les autres propriétés). En fin de compte, Hibernate charge toujours l'arbre complet des jeux de données appartenant à un utilisateur.

Je pensais à détacher l'utilisateur en fermant la session avant que je passe à l'utilisateur de Jersey, ainsi Hibernate ne peut pas charger les rôles, mais cela ne semble pas avoir d'effet.

Toutes les idées?

Était-ce utile?

La solution

  • faire un clone peu profond de votre entité et définir une collection vide, avant de lui donner la sérialisation

  • faire un proxy personnalisé de la collection mandaté et déléguer le chargement que dans certaines circonstances (la première USECASE), et retourner une collection vide dans d'autres

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top