Изучаем Java EE 7 - [192]
XML-представление типа CreditCard также изменится, как вы можете видеть в листинге 12.13 (по сравнению с приведенным ранее (см. листинг 12.8)).
>
>
>··
>··
>··
>
В табл. 12.8 перечислены основные аннотации JAXB. Некоторые из них могут аннотировать атрибуты (или методы получения значений свойств), другие классы, а некоторые — использоваться для всего пакета (например, @XmlSchema).
Аннотация | Описание |
---|---|
@XmlAccessorType | Управляет необходимостью преобразования атрибутов или геттеров (FIELD, NONE, PROPERTY, PUBLIC_MEMBER) |
@XmlAttribute | Преобразует атрибут или геттер к XML-атрибуту примитивного типа (String, Boolean, Integer и т. д.) |
@XmlElement | Преобразует нестатический атрибут или геттер без модификатора transient в XML-элемент |
@XmlElements | Действует как контейнер для нескольких аннотаций @XmlElement |
@XmlEnum | Преобразует перечисление к представлению XML |
@XmlEnumValue | Идентифицирует константу-перечисление |
@XmlID | Идентифицирует ключевое поле элемента XML (или типа String), которое может быть использовано для ссылки на элемент с использованием аннотации @XmlIDREF (концепции XML Schema ID и IDREF) |
@XmlIDREF | Преобразует свойство в схеме в XML IDREF |
@XMLList | Преобразует свойство в список |
@XmlMimeType | Идентифицирует текстовое представление типа MIME |
@Xmlns | Идентифицирует пространство имен XML |
@XmlRootElement | Представляет аннотацию, необходимую любому классу для связывания в качестве корневого элемента XML |
@XmlSchema | Преобразует имя пакета в пространство имен XML |
@XmlTransient | Информирует JXB, что не нужно связывать атрибут (аналогичен ключевому слову transient в Java или аннотации @Transient в JPA) |
@XmlType | Аннотирует класс как комплексный тип в схеме XML |
@XMLValue | Позволяет преобразовать класс в простое содержимое или тип схемы |
При использовании этих аннотаций можно преобразовать данные объекты в конкретные XML-схемы. Иногда вам нужна такая гибкость для работы со старыми веб-службами, как вы увидите в следующих главах. Ссылаясь на JPA, когда необходимо преобразовать сущности в ранее созданную базу данных, существует набор аннотаций, который позволяет удовлетворить потребности настройки отображения любого фрагмента таблицы (столбцы, таблицы, внешние ключи и т. д.). Для веб-служб принцип схожий: они описаны в файле WSDL, который указан в XML. Если служба устарела, ее файл WSDL нельзя изменить. Вместо этого следует использовать механизм преобразования его в объекты, именно поэтому JAXB часто применяется при работе с веб-службами.
В этом разделе я упоминал JPA несколько раз, потому что технологии JPA и JAXB в значительной степени полагаются на аннотации и используются для преобразования объектов в форму, пригодную для различных источников (базы данных или XML). С точки зрения архитектуры сущности должны использоваться только для преобразования данных в форму для базы данных, а JAXB классы — для преобразования данных в XML. Однако иногда вам может понадобиться иметь оба представления. Как вы увидите в главе 14, один класс можно аннотировать и @Entity, и @XmlRootElement.
Основные сведения о JSON
Нотация объектов JavaScript (JSON) представляет собой легкий формат обмена данными, то есть менее подробный и более удобочитаемый, чем XML. Он часто используется для сериализации и передачи структурированных данных через сетевое соединение между сервером и веб-приложением.
В качестве альтернативы XML JSON непосредственно используется в коде JavaScript на веб-страницах. Это основная причина прибегать к JSON, а не к другому представлению данных. В листинге 12.14 показано JSON-представление документа XML, содержащего информацию о заказе и приведенного раннее (см. листинг 12.1).
>{
>··"order": {
>····"id": "1234",
>····"date": "05/06/2013",
>····"customer": {
>······"first_name": "Джеймс",
>······"last_name": "Роррисон",
>······"email": "j.rorri@me.com",
>······"phoneNumber": "+44 1234 1234"
>····},
>····"content": {
>······"order_line": [
>········{
>··········"item": "H2G2",
>··········"quantity": "1",
>··········"unit_price": "23.5"
>········},
>········{
>··········"item": "Гарри Поттер",
>··········"quantity": "2",
>··········"unit_price": "34.99"
>········}
>······]
>····},
>····"credit_card": {
>······"number": "1357",
>······"expiry_date": "10/13",
>······"control_number": "234",
>······"type": "Visa"
>····}
>··}
>}
JSON-объекты можно сериализовать в JSON, который в конечном итоге будет иметь менее сложную структуру, чем XML. Заключив значение переменной в фигурные скобки, вы указываете, что ее значение является объектом. Внутри объекта мы можем объявить любое количество свойств, используя пары "имя":"значение", разделенные запятыми. Чтобы получить доступ к информации, хранящейся в JSON, можно просто сослаться на объект и имя свойства.
Документы JSON. JSON является текстовым, независимым от языка форматом, который использует набор соглашений для представления простых структур данных. Многие языки реализовали API для анализа документов JSON. Структуры данных в JSON просты для человеческого понимания и очень похожи на структуры данных в Java. JSON может представлять четыре примитивных типа (число, строка, двоичное значение и null) и два структурированных (объекты и массивы). В табл. 12.9 перечислены соглашения JSON для представления данных.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.