Sérialisation java

Résolu
Salut,

je cherche une définition simple de la sérialisation des objet en java ainsi que son utilité ?

merci d'avance

6 réponses

  1. Salut, la sérialisation permet de stocker des objets pour les reprendre ensuite. L'avantage est évident : reprendre par exemple un traitement là où il s'était arrêté ou encore recharger des valeurs (configuration, etc).

    Sur les sites comme Developpez.com, tu devrais trouver de nombreux exemples.
    1. Les objets qu'on sérialise sont en général ceux qui contiennent des données. Par exemple une classe qui gère des connexions aux bases de données etc, ne peut pas être sérialisée (normal). En revanche, une classe qu'on peut sérialiser serait par exemple le contenu du panier d'achat d'un client (elle contient des données).

      Lorsque le client visite la page, on recharge l'objet à partir des données.

      En fait, plutôt à toi de voir si la sérialisation peut te servir ou pas suivant ton cas. Ca dépend de l'application.
      1. Quand je me suis posé la même question que toi j'ai trouvé ce site https://ydisanto.developpez.com/tutoriels/java/serialisation-binaire/#LI que je trouve très bien fait.

        Quant à son utilité il peut y en avoir plein... Personnellement je m'en sers souvent pour envoyer des objets entre client-serveur (réseau) ou pour sauvegarder (fichier) l'état d'un objet (par exemple Map, List, Set, ou tout autre..) pour le réutiliser lors d'une exécution future de mon programme.
        1. merci bien pour votre réponse

          je réalise mainant un web service with soap (xml)
          es-ce qu'il est avantagueux de sérialiser les objets de web service pour les faire passer au invocation des clients ?
          1. Excellente explication

            pour mon application , un client s'identifie puis il peut chercher une vidéo pour la voir ( en l'achetant) , il peut également consulter son profil où il y a ses informations personnel ...Qu'en pensez vous qu'elle est la partie à sérialiser?

            grand merci
            1. Et bien suppose que tu as une classe "client" qui contient le nom, prénom, infos personnelles : on pourrait la sérialiser. Une classe vidéo peut contenir aussi des données et des méthodes concernant la vidéo : nom du fichier, infos du film. On peut aussi sérialiser ça.

              Je pense que toute la difficulté est de travailler dans un modèle orienté objet. Il faut voir chaque partie comme un objet. Par exemple, tu veux afficher une recherche de vidéos, et bien il faut charger des objets de type vidéo et jouer avec leur propriétés etc.

              En Java, as-tu déjà entendu parler de Hibernate? C'est un framework très puissant qui permet justement de sérialiser et gérer des données. On peut grâce à cela créer des bases données en relation directe avec les objets de ton application.

              Quelques explications : https://fr.wikipedia.org/wiki/Hibernate

              On utilise plutôt le terme "persistance" au lieu de sérialisation quand on parle d'Hibernate mais ça reste plus ou moins la même chose (charger des objets etc).
            2. Merci bien Rocky_123 vraiment une réponse très très claire et arguemntée
              oui je sais un peu le framework Hibernate , mais je ne sais pas comment lier un projet Hibernate avec un autre type.
              avez vous une idée?
              merci infiniment pour ces réponses
            3. C'est sûr qu'Hibernate c'est pas aussi simple et ça demande quand même pas mal de compréhension, c'est surtout réservé aux projets plus gros avec bases de données etc. Si tu utilise une base de données, tu peux utiliser une méthode simple pour charger et décharger tes objets :

              Tu fais deux méthodes dans ta classe : Load et Save. Ces méthodes s'occupent de charger les propriétés etc.

              Quand tu crée ton objet, tu appelle la méthode Load qui va s'occuper d'exécuter une requête par exemple et récupérer tout le nécessaire. Ensuite tu as les propriétés etc, et quand tu veux, tu appelle Save pour sauvegarder. Tu peux aussi créer des méthodes Update, Delete...

              Cette façon de travailler à l'avantage d'être assez simple à implémenter mais offre une bonne base pour faire la persistance des objets : dans ton application, tu ne t'occupe plus de savoir comment il va chercher ses valeurs, tu appelle juste :

              video.Load();

              Je pense que cette piste serait adaptée dans ton cas. Mais bon, comme je dis, un projet n'est pas un autre, à toi de peser le pour et le contre. On appelle ça l'analyse :-)
            4. c'est très clair ... merci pour tous ces informations.