J'ai un simple pojo nommé "Parent" qui contient une collection d'objet "Enfant". En hibernate/jpa, c'est simplement une association un-à-plusieurs, les enfants ne connaissent pas leur parent: ces objets enfants peuvent avoir différents types de parents donc il est plus facile de ne pas connaître le parent (pensez à Child qui représente les balises et les parents peuvent être différents types d'objets qui ont des étiquettes).Question de sécurité: comment sécuriser les collections Hibernate revenant du client au serveur?
Maintenant, j'envoie mon objet Parent à la vue client de mon site Web pour permettre à l'utilisateur de le modifier. Pour cela, j'utilise Hibernate/GWT/Gilead.
Mon utilisateur fait quelques modifications et cliquez sur le bouton de sauvegarde (ajax) qui envoie mon objet parent au serveur. les champs de mon parent ont été modifiés mais plus important, certains objets enfants ont été ajoutés ou supprimés dans la collection.
Pour résumé, lorsque l'objet parent revient au serveur, il a maintenant dans sa collection: - nouveaux objets « enfants » où id est nul et doit être persister - modification des objets « enfants » où id est non nul et doivent être fusionner - potentiellement piraté objets « enfants » où id est non nul, mais ne sont pas détenus à l'origine par la société mère - objets d'enfants disparus (supprimé): il faut supprimer
Comment vous enregistrez l'objet parent (et sa collection)? chargez-vous la collection parent à partir de la base de données pour comparer chaque objet de la collection modifiée pour voir s'il n'y a pas d'objet piraté? Est-ce que vous effacez l'ancienne collection (pour supprimer orphelin) et re ajouter un nouveau enfant (mais il y a un enfant qui n'a pas été modifié)?
grâce
PS: désolé pour mon anglais, je l'espère vous comprendre le concept;)
Bonjour, merci pour votre réponse;) Toutes mes fonctions sont transactionnelles donc je n'ai pas le problème de corrompre ma base de données. Tout ce que vous avez dit est exactement ce que j'ai en tête;) Dans la majorité de mes cas, j'ai essayé de persister et de fusionner les enfants indépendamment de mes parents (ce qui est plus propre et plus facile à sécuriser, comme vous le dites) mais Dans certains cas, je ne peux pas (mon client ajoute un petit tag, mais je veux attendre qu'il sauve le parent entier, et ne pas enregistrer immédiatement le tag ...). Ceci est un problème difficile ... –