Pull to refresh

Java EE 6. Обзор JPA 2.0, часть 1: Введение

Reading time 2 min
Views 16K

Пожалуй, наибольшее количество изменений с выходом спецификации Java EE 6 было привнесено в JPA (Java Persistence API). В серии статей, начиная с этой, я планирую рассказать подбробно о каждом из нововведений.

Введение


Технология JPA является абстракцией над JDBC и позволяет быть независимым от SQL. Все классы и интерфейсы JPA расположены в пакете javax.persistence, основными составляющими технологии являются:
  • ORM (механизм объектно-реляционного отображения);
  • Entity manager API — позволяет осуществлять базовые операции CRUD;
  • JPQL и Criteria API — механизмы извлечения данных;
  • Управление транзакциями и блокировками (как с использованием JTA, так и без);
  • Механизмы обратных вызовов и listener-ов.


В JPA 2.0 изменения коснулись следующего:
  • Улучшилась поддержка Map-ов: теперь как ключ, так и значение могут быть простым типом, сущностью или встроенным объектом (embedded);
  • Коллекции встроенных объектов и простых типов (Integer и т.д.) могут теперь быть вынесены в отдельные таблицы. Ранее в отдельные таблицы было возможно выносить только коллекции сущностей;
  • Появилась возможность управлять упорядоченностью персистентных объектов с помощью аннотации @OrderColumn;
  • Появилась возможность удалять объекты-сироты (orphan removal): при удалении родительского объекта удаляется и дочерний;
  • Появилась поддержка пессимистической блокировки (оптимистическая поддерживается с JPA 1.0);
  • Новый Query Definition API, который позволяет строить запросы в стиле ООП (в противовес написание в строке JPQL запросов);
  • Сильно расширились возможности JPQL (язык запросов в JPA);
  • Встроенные (embedded) объекты теперь могут входить в состав других встроенных объектов, а также участвовать в связях с сущностями. Навигация по графу объектов с помощью точки была расширена и для использования со встроенными объектами;
  • Добавилась поддержка нового API для кэширования.


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

В следующей статье я расскажу о нововведениях в декларировании ORM.

Java EE 6. Обзор JPA 2.0, часть 2: Коллекции
Tags:
Hubs:
+25
Comments 10
Comments Comments 10

Articles