Object Relational Mapping (ORM) Объектно-реляционное отображение 29.03.2010.

Презентация:



Advertisements
Похожие презентации
Object Relational Mapping (ORM) Объектно-реляционное отображение.
Advertisements

Дмитрий Петухов ЦКЗ Аргус. Технологии доступа к данным Популярные ORM ы NHibernate Демо.
Бланк запроса. Создание списка специальностей Вид при конструирования запросов.
1 Введение Информационные системы Альтернативы задачи доступа к данным Стандарт JPA и коммерческие ORM имплементации Определение ORM Проблемы полного преобразования.
PL/SQL Взаимодействие с СУБД. Специальные типы Имя_таблицы.имя_столбца%TYPE Имя_таблицы%ROWTYPE; Имя_курсора%ROWTYPE;
Реляционные базы данных N-арное отношение – подмножество декартова произведения N множеств возможных значений (доменов, типов данных, атрибутов) Изображение.
База данных База данных – это конкретная предметная область, описанная с помощью таблиц.
Харичкин Александр МФТИ(ГУ) 16 июня Характеристики информационных систем Объем кода Сложность модели данных Масштабируемость Возможность повторного.
Основы SQL Запросы к базе данных. Что такое база данных SQL? SQL (Structured Query Language - «Структурированный язык запросов») - универсальный компьютерный.
ПЛИСКО ВЯЧЕСЛАВ. Удобная работа с базой данных в PHP.
PL/SQL Курсоры. Курсор – специальный элемент, связанный с SQL-оператором SELECT. Объявление курсора происходит в секции объявления базового блока. Работа.
Автоматическая генерация схемы реляционной базы данных на основе объектной схемы данных Богданов Алексей.
База данных и СУБД: основные понятия. База данных: общее понятие База данных: хранилище информации отражает объект реального мира имитирует деятельность.
«ИЗМЕНЕНИЕ ДАННЫХ В БД» Выполнил: студент 722 группы Специальности Информационные системы (по отрослям) Токарев Виктор.
50/codd.pdf 50/codd.pdf
Базы данных Проектирование базы данных Выполнил: Волкова Н.М. гр. С-55 Руководитель: Шурупов Д.В.
Тренинг «Разработка веб-приложений на ASP.NET» Занятие 5 Работа с данными Гайдар Магдануров
Разработка телекоммуникационной и информационной системы для прогнозирования аварий и катастроф на НПЗ.
Язык SQL Последовательности Представления Индексы.
Java Database Connectivity (JDBC) Универсальное API для доступа к данным.
Транксрипт:

Object Relational Mapping (ORM) Объектно-реляционное отображение

Взаимодействие между типами баз данных и подходами доступа к данным.NET: DataSet/DataTable Java: JDBC RowSet.NET: DataSet/DataTable Java: JDBC RowSet.NET: ADO.NET Command Java: JDBC Statement.NET: ADO.NET Command Java: JDBC Statement.NET: LINQ to SQL, NHibernate Java: JPA, Hibernate, JDO.NET: LINQ to SQL, NHibernate Java: JPA, Hibernate, JDO

Примеры реляционной и объектной модели Реляционная модельОбъектная модель предметной области CATALOG_ITEM отображается на иерархию классов в зависимости от значения дискриминатора ITEM_TYPE

Отображение таблицы CATALOG и класса Catalog.java Класс Catalog связан с таблицей CATALOG Первичный ключ – ID, связан со свойством id (функции getId()/setId()) Для генерации значений первичного ключа ID используется sequence SEQ_ID Атрибут NAME связан со свойством name (функции getName()/setName()) Объекты Catalog содержат список CatalogItem связь один-ко-многим обязательная (nullable=false) Внешний ключ, определяющий связь – CATALOG_ID Список CatalogItem загружаются по-требованию (FetchType.LAZY) При сохранении объекта Catalog автоматически сохраняются все его items (CascadeType.ALL)

Работа с Hibernate API Работая с данными в объектно-ориентированном языке, мы работаем с объектами, заполняя и считывая значения полей, создавая новые или изменяя существующие объекты, определяя зависимости между объектами При операции save() мы передаем объект типа Catalog, который сохраняется в базу данных по описанным правилам отображения. В том числе сохраняются и все зависимые объекты (CatalogItem) Составляя запросы к базе данных, мы уже указываем не столбцы таблицы, а свойства объектов

Протокол команд SQL Oracle Hibernate: select SEQ_ID.nextval from dual Hibernate: insert into CATALOG (NAME, ID) values (?, ?) Hibernate: insert into AUTHOR (NAME, BIRTHDATE, id) values (?, ?, ?) Hibernate: insert into CATALOG_ITEM (NAME, AUTHOR_ID, CATALOG_ID, ISBN, ITEM_TYPE, id) values (?, ?, ?, ?, 'BOOK', ?) Hibernate: insert into AUTHOR (NAME, BIRTHDATE, id) values (?, ?, ?) Hibernate: insert into CATALOG_ITEM (NAME, AUTHOR_ID, CATALOG_ID, GENRE, ITEM_TYPE, id) values (?, ?, ?, ?, 'MOVIE', ?) Hibernate: update CATALOG_ITEM set CATALOG_ID=? where id=? Hibernate: select catalog0_.ID as ID0_, catalog0_.NAME as NAME0_ from CATALOG catalog0_ SQL Server Hibernate: insert into CATALOG (NAME) values (?) Hibernate: insert into AUTHOR (NAME, BIRTHDATE) values (?, ?) Hibernate: insert into CATALOG_ITEM (NAME, AUTHOR_ID, CATALOG_ID, ISBN, ITEM_TYPE) values (?, ?, ?, ?, 'BOOK') Hibernate: insert into AUTHOR (NAME, BIRTHDATE) values (?, ?) Hibernate: insert into CATALOG_ITEM (NAME, AUTHOR_ID, CATALOG_ID, GENRE, ITEM_TYPE) values (?, ?, ?, ?, 'MOVIE') Hibernate: update CATALOG_ITEM set CATALOG_ID=? where id=? Hibernate: select catalog0_.ID as ID0_, catalog0_.NAME as NAME0_ from CATALOG catalog0_

Возможности ORM Загрузка связанных объектов по требованию (lazy loading) Обеспечение пессимистической/оптимистической блокировок Кэширование загруженных объектов SQL-подобные запросы по объектной модели

Преимущества ORM Нет необходимости писать рутинные insert/update/delete/select для CRUD операций Условия связи между объектами (строками таблиц) указываются декларативно в одном месте. Возможность использовать полиморфные запросы для иерархий классов Высокая степень независимости от конкретной СУБД

Недостатки ORM Возможны проблемы с производительностью для сложных запросов на объектном SQL. Затрудняет использование специфических конструкций языка SQL конкретной СУБД. The object-relational impedance mismatch

Реализации ORM Hibernate/NHibernate (Java /.NET ) ADO.NET Entity Framework (.NET 3.5) Oracle® TopLink® (Java) iBatis framework (Java,.NET) JPOX Java Data Objects (Java) …

Стандарты ORM EJB 1.1 Entity Beans (legacy) Устаревший стандарт, используется только в legacy приложениях Java Data Object (JDO) Редко используемый стандарт Реализации: JPOX, OpenAccess JDO Java Persistence API (JPA) Наиболее популярный Составная часть стандартов EJB 3+ и JEE 5 Реализации: Hibernate, Oracle TopLink, KODO (OpenJPA)

Литература и ссылки Общая литература: Мартин Фаулер Архитектура корпоративных программных приложений. М., Вильямс, Hibernate: Быстрый старт: Справочник: US/html_single/ US/html_single/ Java Persistence with Hibernate / Christian Bauer, Gavin King / Manning, 2006 NHibernate in Action / Pierre Henri Kuaté, Tobin Harris, Christian Bauer, and Gavin King / Manning 2009