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

В листинге 4.6 показана сущность Book с двумя ограничениями Bean Validation (@NotNull и @Size). Если значением атрибута title окажется null, а вы захотите обеспечить постоянство этой сущности (вызвав EntityManager.persist()), то во время выполнения JPA будет выброшено исключение ConstraintViolation, а соответствующая информация не будет помещена в базу данных.

Листинг 4.6. Сущность с аннотациями Bean Validation

@Entity

public class Book {

··@Id @GeneratedValue

··private Long id;

··@NotNull

··private String title;

··private Float price;

··@Size(min = 10, max = 2000)

··private String description;

··private String isbn;

··private Integer nbOfPage;

··private Boolean illustrations;

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

}

<p>Обзор спецификации JPA</p>

Версия JPA 1.0 была создана вместе с Java EE 5 для решения проблемы обеспечения постоянства данных. Она объединила объектно-ориентированные и реляционные модели. В Java EE 7 версия JPA 2.1 идет тем же путем простоты и надежности, привнося при этом новую функциональность. Вы можете использовать этот API-интерфейс для доступа к реляционным данным Enterprise JavaBeans, веб-компонентам и приложениям Java SE и манипулирования ими.

JPA — это абстракция над JDBC, которая дает возможность быть независимым от SQL. Все классы и аннотации этого API-интерфейса располагаются в пакете javax.persistence. Рассмотрим основные компоненты JPA.

• Объектно-реляционное отображение, которое представляет собой механизм отображения объектов в данные, хранящиеся в реляционной базе данных.

• API менеджера сущностей для осуществления операций, связанных с базами данных, например CRUD-операций.

• JPQL, который позволяет вам извлекать данные с помощью объектно-ориентированного языка запросов.

• Транзакции и механизмы блокировки, которые предусматривает Java Transaction API (JTA) при одновременном доступе к данным. JPA также поддерживает ресурсные локальные (не-JTA) транзакции.

• Обратные вызовы и слушатели для добавления бизнес-логики в жизненный цикл того или иного постоянного объекта.

<p>Краткая история JPA</p>

Решения, которые позволяют выполнять объектно-реляционное отображение, существуют уже долгое время, причем они появились раньше Java. Продукты вроде TopLink начинали со Smalltalk в 1994 году, перед тем как перейти на Java. Коммерческие продукты для выполнения объектно-реляционного отображения, например TopLink, доступны с самых первых дней существования языка Java. Они стали успешными, но никогда не были стандартизированы для платформы Java. Схожий подход к объектно-реляционному отображению был стандартизирован в форме технологии JDO, которой так и не удалось значительно проникнуть на рынок.

В 1998 году появилась версия EJB 1.0, которая позднее сопутствовала J2EE 1.2. Это был тяжеловесный, распределенный компонент, использовавшийся для обработки транзакционной бизнес-логики. Технология Entity Bean CMP, представленная в EJB 1.0 как опциональная, стала обязательной в EJB 1.1 и совершенствовалась с выходом последующих версий вплоть до EJB 2.1 (J2EE 1.4). Постоянство могло обеспечиваться только внутри контейнера благодаря сложному механизму создания экземпляров с использованием домашних, локальных или удаленных интерфейсов. Возможности в плане объектно-реляционного отображения тоже оказались весьма ограниченными, поскольку наследование было сложно отображать.

Параллельно с миром J2EE существовало популярное решение с открытым исходным кодом, которое привело к удивительным изменениям в «направлении» постоянства: имеется в виду технология Hibernate, вернувшая назад легковесную, объектно-ориентированную постоянную модель.

Спустя годы жалоб на компоненты Entity CMP 2.x и в знак признания успеха и простоты фреймворков с открытым исходным кодом вроде Hibernate архитектура модели постоянства Enterprise Edition была полностью пересмотрена в Java EE 5. Версия JPA 1.0 была создана с использованием весьма облегченного подхода, который позаимствовал многие принципы проектирования Hibernate. Спецификация JPA 1.0 была связана с EJB 3.0 (JSR 220). В 2009 году версия JPA 2.0 (JSR 317) сопутствовала Java EE 6 и привнесла новые API-интерфейсы, расширила JPQL и добавила новую функциональность, такую, например, как кэш второго уровня, пессимистическая блокировка или Criteria API.

Сегодня, когда уже есть Java EE 7, версия JPA 2.1 стремится к легкости разработки и привносит новые функции. Она эволюционировала в JSR 338.

<p>Что нового в JPA 2.1</p>
Перейти на страницу:

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

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

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

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

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

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

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

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