понедельник, 22 марта 2010 г.

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


Пожалуй, наибольшее количество изменений с выходом спецификации 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.

Комментариев нет:

Отправить комментарий