Oznacza to, że klasa może być w odcinkach. Oznacza to, że można go przekonwertować na strumień 0 i 1 i wysłać do innej usługi, takiej jak usługa sieciowa i ORM (hibernacja) lub cokolwiek innego. Wtedy ta usługa wie, w jaki sposób przechowywać strumień.
Twój program może również otrzymać klasę serializowaną i utworzyć dla niej instancję ze strumienia 0 i 1.
Jest to sposób na "zapisywanie" wystąpień klas i "przywracanie" ich w dowolnym momencie.
Więcej informacji na
Aby móc dokonać klasy serializacji, trzeba zaimplementować interfejs "Serializable".
Dlaczego tak? Ponieważ gdy nadejdzie moment serializacji klasy, funkcja writeObtject
zostanie wywołana w celu przekonwertowania obiektu na bajty. Z drugiej strony, gdy masz bajty i chcesz uzyskać instancję klasy, zostanie wywołana funkcja readObject
.
Dlaczego nie jest automatyczny? Zmienna wartość jest już reprezentowana przez bajty. Ponieważ problem występuje na przykład wtedy, gdy klasa zawiera instancje innych klas. Co robisz? Kolejne klasy są również inne klasy? Po prostu zachowujesz adres referencyjny? Jest to dość skomplikowane i może zależeć od rodzaju projektu i projektu.
Jest to albo dupe od (http [Tabela Klasy Do Hibernate muszą być Serializable?]: // stackoverflow.com/questions/2726300/do-hibernate-table-classes-need-to-be-serializable) lub, jeśli nie jest to pytanie specyficzne dla Hibernate/JPA, powielenie [What is object serialization?] (http: // stackoverflow. com/questions/447898/serializacja co-jest-obiektowa). W obu przypadkach jest to dupek :) –
Edytowałem tagi. Usunięto "jpa" i "hibernacja" i dodano "serializację". – pakore
@pascal: przepraszam, jestem nowicjuszem. Teraz się uczę. W przyszłości z pewnością tego uniknę. –