1 / 34

Сериализация

Сериализация. В java. Определение. Сериализация  это процесс сохранения состояния объекта в последовательность байт;  Десериализация  это процесс восстановления объекта, из этих байт . JAVA API предоставляет стандартный механизм сериализации , это просто синтаксический сахар.

seoras
Download Presentation

Сериализация

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Сериализация В java

  2. Определение • Сериализация это процесс сохранения состояния объекта в последовательность байт;  • Десериализация это процесс восстановления объекта, из этих байт. • JAVA API предоставляет стандартный механизм сериализации, это просто синтаксический сахар.

  3. java.io.Serializable Стандартный механизм

  4. Зачем это придумали? • Необходимость общаться нескольким компонентам java (т.е. нужен протокол передачи данных) • Возможность сохранения и восстановления состояния объектов • Возможность копирования сложных объектов

  5. Зачем это придумали?

  6. Передача данных с клиента на сервер

  7. Как сериализовать? • Класс объекта должен реализовать интерфейс java.io.Serializable • В этом интерфейсе нет ни одного метода, он просто маркирует объект как сериализуемый

  8. Как сериализовать? • Для сериализации объекта необходимо передать экземпляр класса в метод weriteObject() класса java.io.ObjectOutputStream Теперь объект записан в файл

  9. Десереализация • Обратный процесс использует метода readObject() класса java.io.ObjectInputStream

  10. Что лежит в файле temp.out Шестнадцатеричное представление содержимого. Два шестнадцатеричных символа представляют один байт, т.е. в файле 51 байт, тогда как в классе TestSerialвсего 2 значения по байту.

  11. Алгоритм сериализации • запись метаданных о классе ассоциированном с объектом • рекурсивная запись описания суперклассов, до тех пор пока не будет достигнут java.lang.Object • после окончания записи метаданных начинается запись фактических данных ассоциированных с экземпляром, только в этот раз начинается запись с самого верхнего суперкласса • рекурсивная запись данных ассоциированных с экземпляром начиная с самого низшего суперкласса http://habrahabr.ru/post/60317/

  12. Десериализация в другой jvm • Чтобы класс можно было сериализовать в одной jvm, а десериализовать в другой необходимо, чтобы в обе jvmбыли загружены классы с одинаковым описанием и указанным SerialVersionUID.

  13. Java Architecture for XML Binding jaxb

  14. Что такое JAXB • Стандартная технология для связывания объектной модели с XML документом на java • Используется для преобразования XML в java объекты и наоборот • Позволяет не заботится о методе разбора XML

  15. Основные методы JAXB • Marshalling – преобразования java объекта в XML • UnMarshalling – преобразование XML в java объект Примечание Можно заметить что в случае когда речь идёт о текстовом формате переноса данных вместо слова сериализациячасто используют слово маршалинг. Маршалингздесь более узкое понятие чем сериализацияи указывает на то что формат преобразования будет текстовым (XML), а не бинарным (java Serializable).

  16. Marshalling

  17. UnMarshalling

  18. Java object to XML • Создаём простой java объект • Добавляем jaxbаннатации

  19. Пример класса Определяет корневой элемент XML файла Определяет порядок элементов в XML Определяет элемент XML, также устанавливает имя сущности Добавляет обёртку над элементом Заметим, что список хранит элементы типа State. А как сериализоватьState?

  20. Аннотированный класс Stae.java Означает, что класс Country будет корневым элементом

  21. Сериализация в XML Создание экземпляра класса Country Создание jaxbконтекста Создание маршалера Сериализация созданного экземплара

  22. XML документ

  23. Процесс десериализации Создание jaxbконтекста Создание анмаршалера Сериализация созданного экземплара Вывод

  24. JAXB генерация классов • Java классы содержат сложную и не всегда очевидные аннотации • Иногда нужно, чтобы java классы генерировались из готового описания структуры xml • JAXB имеет специальную утилиту для генерации классов (%JAVA_HOME\bin\xjc.exe%) из xsdдокумента.

  25. Xml Schemadefinition (xsd) • Это стандартное (w3c) описание формата данных передаваемого в xml • Правильный xml документ • Специально создавалась для использования внутри программного обеспечения для обработки документов • Благодаря включению одного документа в другой позволяет распространять стандарты http://www.w3.org/standards/techs/xmlschema

  26. Информация в xsd • Xsdобязательно содержит: • Словарь (называние элементов и атрибутов) • Модель содержания (отношение между элементами и их структура) • Типы данных • Такая информация позволяет легко подготовить классы ООП языка В качестве альтернативы XML Schema раньше применялась DTD

  27. Схема работы JAXB • Для XML пишется XML схема в виде xsd файла • Используя утилиту xjc из стандартной поставки Java JDK генерируете из схемы набор классов. • Классы включаются в программу. JAXB marshaller используется для генерации XML из объектов, unmarshaller – для получения объектов из XML

  28. Схема работы JAXB

  29. Пример описания xsd

  30. Заголовок документа Заголовок xml Namespace для xml

  31. Описание элементов

  32. Описание структуры

  33. Генерация Фабрика для создания объектов Хранит информацию о namespace’е Остальные сгенерированные классы являются простыми проаннотированными java классами представляющими элементы xml

  34. Изучить самомтоятельно JSON http://wiki.fasterxml.com/JacksonInFiveMinutes Jackson https://sites.google.com/site/gson/gson-user-guideGjson

More Related