1
Введение Информационные системы Альтернативы задачи доступа к данным Стандарт JPA и коммерческие ORM имплементации Определение ORM Проблемы полного преобразования при ORM История спецификации JPA Цели разработчиков спецификации JPA 2
Информационные системы Термин enterprise используется в разных контекстах, но неизменно связан с информацией Хранение и получение информации – многомиллионный бизнес Реляционные БД – стандарт де- факто Данные обычно переживают приложение 3
Поддержка в Java Платформа Java всегда имела средства работы с БД (JDBC) JDBC это стандарт, найти нужный драйвер не проблема Однако перемещение данных из БД в Java приложение сложнее, чем должно быть
Альтернативы JDBC Enterprise Java Beans (2.x) JDO ORM tools (open-source и коммерческие) 5
JDBC Плюсы: Абстрагирование от БД Простой API Доступ к SQL Минусы Хотя JDBC API портируемый, сам SQL нет Жесткое связываение SQL и Java приложения Очень громоздкие ручные преобразования табличных данных в Java объекты 6
EJB 2.x Плюсы: Попытка абстрагировать работу с SQL в коде приложения Минусы: Сложность!!! Interface-based подход Конфигурации, спецефические для поставщика БД 7
JDO Стандарт от Sun Расширяет (enhance) байт код, делает его совместимым с любым поставщиком БД Не был поддержан основными игроками в производстве ПО Sun отказался от стандарта JDO Sun сделал стандарт JPA частью EJB 3.0 8
ORM Tools Программисты искали подход: Нет завязки на конкретные интерфейсы Сосредоточиться на бизнес- логике, а не на преобразовании данных Open-source Hibernate Commercial Oracle Top-Link 9
Зачем другой стандарт? Стандарт нечто значительно большее, чем продукт Много поставщиков продукта, удовлетворяющего стандарту Сделать Hibernate стандартом плохо для самого Hibernate Безопасность (подмена vendor) Другие плюсы: обучение шаблоны использования стандарт индустрии 10
Что такое ORM? Класс и таблица похожи. Должно быть просто преобразовать одни данные в другие автоматически ORM – строгий набор правил описания преобразования объектной модели в реляционную. Некий механизм использует эти описания и производит автоматическое преобразование моделей 11
Чего мы хотим от ORM? Оперируем объектами, а не таблицами Удобство Ненавязчивость технологии Использовать существующую схему данных Относительная дешевизна Локальность 12
ORM Impedance Mismatch Неоднозначность представления класса Неоднозначность отношения Неоднозначность отношения наследования 13
Неоднозначность представления класса 14
Неоднозначность отношения 15
Неоднозначность отношения наследования 16
История JPA ORM технология стара. Коммерческие продукты были еще до Java TopLink был еще в SmallTalk EJB 3.0 Session & Message Driven beans были незначительно изменены (аннотации+POJO) Entity beans specification была начата заново Hibernate и TopLink эксперты были приглашены для создания спецификации Java Persistence API это третий, отдельный документ в составе документации Java EE Platform 17
Цели разработчиков спецификации JPA (1 из 2) POJO Persistence Существующее приложение может быть адаптировано к использованию JPA без замены единой строки кода Ненавязчивость (Non-intrusiveness) Доменный слой не должен ничего знать про persistence technology Запросы над объектами Использовние объектной модели для выборок данных. Любой сложности Возможность использования SQL в критичных местах приложения 18
Цели разработчиков спецификации JPA (2 из 2) Мобильные сущности Возможность передавать сущности из одной JVM в другую Выполнять reattach Простая конфигурация Активное использование значений по умолчанию Аннотации в коде легко определяются и читаются. Компилятор делает проверки Простота тестирования Проблемы тестирования типичного J2EE приложения JPA может быть протестирован в J2SE среде 19
Введение. Обзор. Информационные системы Альтернативы задачи доступа к данным Стандарт JPA и коммерческие ORM имплементации Определение ORM Проблемы полного преобразования при ORM История спецификации JPA Цели разработчиков спецификации JPA 20