IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

enregistrer et lire un Blob


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de reeda
    Formateur en informatique
    Inscrit en
    Août 2006
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 367
    Par défaut enregistrer et lire un Blob
    Bonjour tout le monde,

    je voudrais savoir comment faire pour enregistrer une image (en blob) dans une base de données en utilisant hibernate, et aussi je voudrais par la suite pouvoir le récuperer afin de l'afficher bien sur,

    seulement je ne sais pas comment faire !

    Merci d'avance
    bien cordialement

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Par défaut
    1. Classe persistante : propriété de type java.sql.Blob

    2. Fichier mapping : préciser le type dans le mapping de la propriété
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <property name="image" type="blob"/>
    3. Code Java - écriture : renseigner le blob à partir d'un flux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Blob blob = Hibernate.createBlob(imageStream);
    4. Code Java - lecture : récupérer les octets à partir de la propriété Blob
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Blob blob = objet.getImage(); 
    byte[] octets =  blob.getBytes(1, (int) blob.length());

  3. #3
    Membre éclairé Avatar de reeda
    Formateur en informatique
    Inscrit en
    Août 2006
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 367
    Par défaut
    Citation Envoyé par ohanny Voir le message
    1. Classe persistante : propriété de type java.sql.Blob

    2. Fichier mapping : préciser le type dans le mapping de la propriété
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <property name="image" type="blob"/>
    3. Code Java - écriture : renseigner le blob à partir d'un flux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Blob blob = Hibernate.createBlob(imageStream);
    4. Code Java - lecture : récupérer les octets à partir de la propriété Blob
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Blob blob = objet.getImage(); 
    byte[] octets =  blob.getBytes(1, (int) blob.length());
    salut,

    merci beaucoup pour ta réponse,
    je voudrais savoir qu'est ce que je devrai faire une fois l'url de l'image récupérée, càd comment la convertir en flux binaire pour la mettre dans le Blob (l'objet java),

    Merci
    bien cordialement

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Par défaut
    Quand tu disposes de l'url, il te suffit d'en récupérer l'input stream, puis de convertir ce stream en blob :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    URL url = new URL("xxx");
    URLConnection uc = url.openConnection();
    InputStreamReader imageStream = new InputStreamReader(uc.getInputStream());
     
    Blob blob = Hibernate.createBlob(imageStream);

  5. #5
    Membre éclairé Avatar de reeda
    Formateur en informatique
    Inscrit en
    Août 2006
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 367
    Par défaut
    Citation Envoyé par ohanny Voir le message
    Quand tu disposes de l'url, il te suffit d'en récupérer l'input stream, puis de convertir ce stream en blob :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    URL url = new URL("xxx");
    URLConnection uc = url.openConnection();
    InputStreamReader imageStream = new InputStreamReader(uc.getInputStream());
     
    Blob blob = Hibernate.createBlob(imageStream);
    salut,

    quand j'essaye de faire passer un InputStreamReader à la fonction createBlob( ), ça passe pas, j'ai cherché et j'ai trouvé qu'il fallait lui faire passer un InputStream, càd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    URL url = new URL("xxx");
    URLConnection uc = url.openConnection();
    Blob blob = Hibernate.createBlob(uc.getInputStream());
    je ne sais pas si c'est exact ou pas,
    PS: je ne peux pas essayer maintenant à cause d'un autre problème

    Merci
    bien cordialement

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Par défaut
    tu as raison, c'est bien l'input stream qu'il faut utiliser, et non pas le reader

  7. #7
    Membre éclairé Avatar de reeda
    Formateur en informatique
    Inscrit en
    Août 2006
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 367
    Par défaut
    salut,

    je viens de tester le code,
    il donne un problème au niveau de l'url,
    il ne connait pas les paths du genre :
    c:\admin\document and setings\images\image.gif

    Mais quand je lui ai donner le chemin d'une image sur un site internet, ça passe,
    donc comment faire pour qu'il accepte des paths réels,

    En php il y a une fonction qui permet cela : realPath("...")
    je ne sais pas s'il y a un équivalent en Java

    Merci
    Bien cordialement

  8. #8
    Membre éclairé Avatar de reeda
    Formateur en informatique
    Inscrit en
    Août 2006
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 367
    Par défaut Enregistrer un Blob
    salut,

    hamdoulilah, j'ai pu résoudre le problème,
    j'ai utilisé un File pour la lecture du fichier, et après je l'ai exporté vers un objet de type URL, comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fichier=new File(path);
    url=fichier.toURI().toURL();
    Merci beaucoup ohanny
    Bien cordialement

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Par défaut
    ok, je suis content que tu ais résolu ton pb

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Oracle] Enregistrer image au format blob
    Par karenv5 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/05/2010, 20h19
  2. Enregistrer un champ image BLOB sur disque
    Par dimah77 dans le forum Débuter
    Réponses: 1
    Dernier message: 22/06/2009, 15h12
  3. Enregistrer et lire dans une fenêtre
    Par corgato dans le forum Qt
    Réponses: 22
    Dernier message: 19/06/2009, 18h15
  4. Lire un BLOB en format texte
    Par Contrec dans le forum C#
    Réponses: 4
    Dernier message: 30/08/2007, 13h42
  5. Comment Enregistrer un champ type BLOB avec Query ???
    Par baba dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/01/2005, 20h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo