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

avec Java Discussion :

Sérialiser un objet directement dans une base de données


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2002
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 63
    Par défaut Sérialiser un objet directement dans une base de données
    Bonjour,

    Je souhaite sérialiser un objet pour le stocker dans une base de données HSQL dans un champ de type LONGVARBINARY.

    Je suis ce tutoriel sur la sérialisation binaire et plus particulièrement la partie concernant la classe ObjectOutputStream.

    Ce qui m'embête dans l'exemple ci-dessous (copié-collé du tuto) c'est que l'objet transite par un fichier, or moi je voudrais directement le stocker dans ma base de données avec une requête du genre INSERT INTO. Mais je ne vois pas du tout comment faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    // création d'une personne
    			Personne p = new Personne("Dupont", "Jean", 36);
    			System.out.println("creation de : " + p);
     
    			// ouverture d'un flux de sortie vers le fichier "personne.serial"
    			FileOutputStream fos = new FileOutputStream("personne.serial");
     
    			// création d'un "flux objet" avec le flux fichier
    			ObjectOutputStream oos= new ObjectOutputStream(fos);
    			try {
    				// sérialisation : écriture de l'objet dans le flux de sortie
    				oos.writeObject(p); 
    				// on vide le tampon
    				oos.flush();
    				System.out.println(p + " a ete serialise");
    			} finally {
    				//fermeture des flux
    				try {
    					oos.close();
    				} finally {
    					fos.close();
    				}
    			}
    Si vous avez une petite idée, je suis preneur

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,



    Tu peux utiliser un ByteArrayOutputStream à la place du FileOutputStream pour stocker le contenu du fichier dans un byte[], et utiliser ensuite )]setBytes() de ton statement...

    Sinon tu devrais également pouvoir faire cela avec des Piped*Stream je pense...



    Mais une question : pourquoi serialiser dans la BD ? N'y a-t-il pas un autre format qui soit mieux adapté ?


    a++

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2002
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 63
    Par défaut
    Merci pour cette réponse rapide

    Qu'entends tu par "un autre format mieux adapté" ? En fait je veux faire ça parce que j'ai un faible volume de données à gérer, que j'utilise une base de données embarquée à mon application (HSQL) et que les objets à stocker ne sont vraiment pas gros.

    Comme je reprends le développement Java et que je dois en plus faire vite, j'avais pas trop envie de me frotter au mapping Objet/Relationnel.

    Quoiqu'il en soit merci pour ta réponse, je vais tester ça et je reviens.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ben disons que si tu stockes des objets tel quel dans une BD, la BD est un peu inutilisable pour faire des requêtes...

    C'est un peu dommage de se servir d'une BD comme d'un simple espace de stockage !

    a++

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2002
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 63
    Par défaut
    Oui remarque c'est pas idiot ...
    Je vais réfléchir à tout ça.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/04/2014, 23h29
  2. Lien inverse dans une base des données objet
    Par kochfet dans le forum Décisions SGBD
    Réponses: 0
    Dernier message: 08/06/2013, 13h55
  3. Mapping des objets C++ dans une base de données
    Par ScratchBag dans le forum C++
    Réponses: 18
    Dernier message: 20/09/2008, 12h15
  4. [POO] Sérialiser un objet PDO dans une classe
    Par __fabrice dans le forum Langage
    Réponses: 9
    Dernier message: 15/09/2008, 22h30
  5. Recuperation des objet ole dans une base SQL
    Par TOPGUN89 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 25/11/2005, 09h14

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