Читаем Изучаем 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;

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

}

Обзор спецификации JPA

Версия 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) транзакции.

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

Краткая история JPA

Решения, которые позволяют выполнять объектно-реляционное отображение, существуют уже долгое время, причем они появились раньше 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.

Что нового в JPA 2.1

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

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

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Нил Форд , Билл де Ора , Майкл Хайгард

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT