2010-09-20 6 views
10

Doublons possibles:
Do Hibernate table classes need to be Serializable?
What does Serializable mean?Qu'est-ce que Serializable? Qu'est-ce que ça veut dire?

public class ExampleEntity implements Serializable 
{ 
    @Id 
    private long id; 
    private int fieldInt; 
    private long fieldLong; 
    private String fieldString; 
} 

Je cherche après des tutoriels JPA. Je suis capable de comprendre les concepts de base, mais dans tous les tutoriels qu'ils ont ajoutés, ce sérialisable. Quel est le but de ceci? Comment cela m'aide-t-il? Des suggestions S'il vous plaît?

+0

C'est soit dupe de (http [Do cours de table Hibernate doivent être Serializable?]: // stackoverflow.com/questions/2726300/do-hibernate-table-classes-besoin-d'être-sérialisable) ou, si ce n'est pas une question spécifique à Hibernate/JPA, une dupe de [Qu'est-ce que la sérialisation d'objet?] (http: // stackoverflow. com/questions/447898/quoi-est-objet-sérialisation). Dans les deux cas, c'est une dupe :) –

+0

J'ai édité les tags. Suppression de "jpa" et "hibernation" et ajout de "sérialisation". – pakore

+0

@pascal: désolé je suis un débutant. J'apprends maintenant. Je vais éviter cela à l'avenir certainement. –

Répondre

23

Cela signifie que la classe peut être sérialisée. Cela signifie qu'il peut être converti en un flux de 0 et 1 et être envoyé à un autre service, comme un service web ou et ORM (hibernation) ou autre. Alors ce service sait comment stocker le flux.

En outre, votre programme peut recevoir une classe sérialisée et créer une instance à partir du flux de 0 et de 1. C'est le moyen de "sauvegarder" des instances de classes et de les "restaurer" à tout autre moment.

Plus d'infos sur

Pour pouvoir faire une classe sérialisable, vous devez implémenter l'interface "Serializable".

  • Pourquoi donc? Parce que lorsque le moment de sérialiser une classe arrivera, la fonction writeObtject sera appelée pour convertir l'objet en octets. D'autre part, quand vous avez les octets et que vous voulez obtenir l'instance de la classe, la fonction readObject sera appelée.

  • Pourquoi n'est pas automatique? Une valeur variable est déjà représentée par des octets. Parce que le problème vient par exemple lorsqu'une classe contient des instances d'autres classes. Que faire? Vous sérialisez les autres classes aussi? Vous gardez juste l'adresse de référence? C'est assez complexe et cela peut dépendre de votre type de projet et de design.

+0

@pokore merci j'ai bien compris. aussi qu'est-ce que ce @GeneratedValue (strategy = GenerationType.AUTO) signifie? est-ce pour l'incrémentation automatique de l'ID. –

+1

@weed :-) C'est une question complètement différente –

+1

Pour clarifier davantage, le point de l'interface est de marquer des classes qui peuvent raisonnablement être sérialisées. Par exemple, il ne serait pas logique de sérialiser un socket réseau en direct, donc il n'est pas marqué comme sérialisable. –

1

Les classes sérialisables peuvent être sérialisées - converties en octets pour être stockées sur un disque dur ou transmises sur un réseau.

+0

@fridley merci pour votre explication. –

Questions connexes