Читаем Изучаем Java EE 7 полностью

··@Id @GeneratedValue

··protected Long id;

··@Column(length = 50, nullable = false)

··protected String title;

··protected Float price;

··@Column(length = 2000)

··protected String description;

··// Конструкторы, геттеры, сеттеры

}

Как вы можете видеть в листинге 5.67, атрибуты title и description снабжены аннотацией @Column. В листинге 5.68 показана сущность Book, расширяющая Item.

Листинг 5.68. Сущность Book расширяет Item

@Entity

public class Book extends Item {

··private String isbn;

··private String publisher;

··private Integer nbOfPage;

··private Boolean illustrations;

··// Конструкторы, геттеры, сеттеры

}

Эта иерархия будет отображена только в одну таблицу. Item не является сущностью и не содержит таблиц. Атрибуты Item и Book были бы отображены в столбцы таблицы BOOK, кроме того, отображенные суперклассы также совместно используют свою информацию об отображении. Аннотации @Column отображенного суперкласса Item будут унаследованы. Однако, поскольку такие суперклассы не являются сущностями, которые находятся под управлением, вы не смогли бы, к примеру, обеспечить их постоянство или выполнять к ним запросы. В листинге 5.69 показана структура таблицы BOOK с настроенными столбцами TITLE и DESCRIPTION.

Листинг 5.69. Таблица BOOK включает все атрибуты Item

create table BOOK (

··ID BIGINT not null,

··TITLE VARCHAR(50) not null,

··PRICE DOUBLE(52, 0),

··DESCRIPTION VARCHAR(2000),

··ILLUSTRATIONS SMALLINT,

··ISBN VARCHAR(255),

··NBOFPAGE INTEGER,

··PUBLISHER VARCHAR(255),

··primary key (ID)

);

<p>Резюме</p>

Благодаря конфигурации в порядке исключения немногое требуется для того, чтобы отобразить сущности в таблицах. Проинформируйте поставщика постоянства о том, что класс на самом деле является сущностью (посредством @Entity), атрибут — его идентификатором (посредством @Id), а JPA сделает все остальное. Эта глава могла бы быть намного короче, если бы мы придерживались в ней только того, что применяется по умолчанию. JPA обладает очень богатым набором аннотаций для настройки всех мелких деталей объектно-реляционного отображения (а также эквивалентного XML-отображения).

Элементарные аннотации могут быть использованы в отношении атрибутов (@Basic, @Temporal и т. д.) или классов для настройки отображения. Вы можете изменить имя таблицы либо тип первичного ключа или даже избегать отображения с помощью аннотации @Transient. Применяя JPA, вы можете отображать коллекции базовых типов или встраиваемых объектов. В зависимости от своей бизнес-модели вы можете отображать связи (@OneToOne, @ManyToMany и т. д.) с разными направлениями и множественностью. То же самое касается и наследования (@Inheritance, @MappedSuperclass и т. д.), при котором допустимо использовать разные стратегии для отображения иерархий, где смешаны сущности и классы, не являющиеся сущностями.

В этой главе внимание было сосредоточено на статической части JPA, или на том, как отображать сущности в таблицах. В следующей главе рассматриваются динамические темы: как управлять этими сущностями и выполнять к ним запросы.

<p>Глава 6. Управление постоянными объектами</p>

У Java Persistence API имеется две стороны. Первая — это способность отображать объекты в реляционные базы данных. Конфигурация в порядке исключения дает поставщикам постоянства возможность выполнять большую часть работы с использованием малого количества кода, а функционал JPA также позволяет осуществлять настроенное отображение из объектов в таблицы с помощью аннотаций или XML-дескрипторов. JPA предлагает широкий спектр настроек, начиная с простого отображения (изменения имени столбца) и заканчивая более сложным (наследованием). Благодаря этому вы сможете отобразить почти любую объектную модель в унаследованной базе данных.

Другая сторона JPA — это способность выполнять запросы к этим отображенным объектам. В JPA централизованной службой для манипулирования экземплярами сущностей является менеджер сущностей. Это API-интерфейс для создания, поиска, удаления и синхронизации объектов с базой данных. Он также позволяет выполнять разнообразные JPQL-запросы, например динамические, статические или «родные» запросы к сущностям. При использовании менеджера сущностей также возможно применение механизмов блокировки.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных