Le 28/02/2013 20:47, Eric Chatellier a écrit :
à moins que tu préfères charger ton objet dans la même session Hibernate que
ta liste.
C'est un document qui n'a pas forcement d'id (par encore sauvé), donc
actuellement
je n'ai que l'instance non rechargeable.
Ok, je comprends mieux la subtilité. Tu ne peux pas utiliser un constructeur
qui prend en argument un id et qui charge l'objet car celui-ci peut ne pas
exister. Cela se passe uniquement quand on crée une entité quelconque puis
qu'on ajoute un document et qu'on revient sur son édition avant d'avoir
valider l'entité créer. Ce n'est qu'à la validation du formulaire de cet
entité que l'ensemble des objets sont enregistrés en base.
Par contre, ce que je ne saisis pas tout à fait, c'est que tu sembles
effectuer l'ajout du fichier en base lorsqu'on valide l'ajout d'un document.
Cette ajout ne devrait-il pas se faire qu'une fois l'entité enregistré pour
éviter de laisser des fichiers orphelins ?? (exemple du cas où l'utilisateur
ajoute des documents puis annule ensuite l'ajout de l'entité).
Non, je fais seulement :
documentAttachable.addDocument(document);
La sauvegarde en base ne se fait que quand le "documentAttachable" sera
sauvegardé plus tard.

À ne pas confondre avec:
documentService.addDocumentContent(document, uploadedFile.getClientFileName(),
uploadedFile
                            .getContentType(), uploadedFile.getBytes());
qui fait du traitement d'image pour générer la miniature de l'image mais qui ne
sauvegarde rien.

Oui, c'est bien la méthode qui m'a induit en erreur. Tu as raison le contenu du document est juste ajouté, et ce n'est qu'à la validation de l'entité qu'on a bien un save() qui en cascade sauvegarde bien le document en base.
C'est une très bonne chose d'avoir fait le choix de sauvegarder les fichiers en base, cela simplifie grandement leur gestion !

Je trouve que ce code à plus sa place dans les services que c'est l'UI.
Tout à fait.

      
Cela me fait penser qu'il faudrait prévenir l'utilisateur au retour de
formulaire d'édition du document par un simple avertissement du style :
"L'enregistrement du document s'effectuera à la validation du formulaire".
Je modifie le OK message dans ce sens.
Parfait, ça sera plus clair pour l'utilisateur.

Bon week-end,
Adrien

--
Adrien Cheype
Ingénieur en Systèmes d'Information
Service « Informatique Scientifique et Appui aux Partenaires du Sud »
Direction du Système d'Information (DSI)
http://www.ird.fr/dsi/
http://www.ird.fr/informatique-scientifique/

INSTITUT DE RECHERCHE POUR LE DEVELOPPEMENT
BP A5 - 98848 Nouméa - Nouvelle Calédonie
Tél. +687 260 789