JAXB (Java Architecture for XML Binding) — это стандарт в отрасли, технология, которая позволяет создавать Java-классы на основе XML Schema. В этом процессе JAXB также предоставляет метод обратного создания дерева объектов Java из экземпляра XML-документа и может повторно записывать содержимое дерева объектов Java в экземпляр XML-документа. С другой стороны, JAXB предлагает быстрый и простой способ привязки XML-схемы к представлению в Java, что позволяет разработчикам на Java удобно интегрировать XML-данные и функции обработки в приложениях на Java.
Важные классы и интерфейсы JAXB в JDK:
-
JAXBContext — класс приложения, используемый для управления информацией о привязке XML/Java.
-
Marshaller — интерфейс, который сериализует объекты Java в данные XML.
-
Unmarshaller — интерфейс, который десериализует данные XML в объекты Java.
Важныe аннотации JAXB в JDK:
-
@XmlType — сопоставляет Java-класс или тип перечисления с типом XML-схемы.
-
@XmlAccessorType(XmlAccessType.FIELD) — управляет сериализацией полей или свойств. FIELD указывает, что JAXB автоматически привязывает каждое нестатическое (static) и непереходное (помеченное @XmlTransient) поле в классе Java к XML. Другие значения включают XmlAccessType.PROPERTY и XmlAccessType.NONE.
-
@XmlAccessorOrder — управляет порядком атрибутов и полей в классе JAXB.
-
@XmlJavaTypeAdapter — использует настраиваемый адаптер (расширяет абстрактный класс XmlAdapter и переопределяет методы marshal() и unmarshal()) для сериализации класса Java в XML.
-
@XmlElementWrapper — создаёт элемент-обёртку для массива или коллекции (содержащей несколько элементов), который называется обёрткой.
-
@XmlRootElement — сопоставляет класс Java или тип перечисления с элементом XML.
-
@XmlElement — сопоставляет атрибут или свойство класса Java с одноимённым элементом XML.
-
@XmlAttribute — сопоставляет атрибут класса Java с одноимённым атрибутом XML.
Аннотация @XmlElement может использоваться с параметром nillable, чтобы сделать узел допускающим пустые значения. Когда значение узла равно null, отображается пустой узел; по умолчанию узел просто удаляется.
Среди этих аннотаций наиболее часто используются @XMLType, @XmlAccessorType и @XmlRootElement.
Причины использования JAXB:
- В проектах иногда бывает много XML-файлов, но если их можно обрабатывать через объекты, это может уменьшить количество проблем с операциями и лучше соответствовать стилю кодирования программистов.
- В проектах иногда встречается множество данных в сущностях классов на одной странице, и некоторые данные могут быть необязательными. Можно использовать DTO для написания этих сущностей, но иногда необходимо предварительно сохранить эти DTO, а не хранить их в базе данных. В таком случае есть два подхода: сохранение в памяти или на жёстком диске. Тогда можно преобразовать объекты Java в файлы XML для хранения или преобразовать их в строки для сохранения в памяти.
- Рассмотрим сценарий, в котором страница состоит из множества модулей, образующих единое целое. Когда пользователь выполняет операции над несколькими модулями, но данные после операции не являются окончательными, необходимо сначала сохранить текущие данные на странице (Done), а затем перейти на другую страницу для выполнения других операций. После этого пользователь возвращается на исходную страницу, где предыдущие данные должны сохраняться, чтобы пользователь мог легко просмотреть их. Однако, поскольку модулей много, сохранение данных в базе данных заранее будет пустой тратой ресурсов, так как это не окончательный результат. Только когда пользователь хочет сохранить окончательные данные (Save), они сохраняются в базе данных. На этом этапе требуется большое количество временных данных, и хорошим решением является использование XML для сохранения текущих данных на странице.
Комментарии ( 0 )