©2016 GlobalLogic Inc.
Object-Relational Mapping
for dummies
Андрей Сидун
2
Обо мне
Андрей Сидун
• Программирую с 1989 (хотел
написать игру)
• За зарплату программирую 15 лет,
из них 6 на Java
• Люблю делиться знаниями,
поэтому читаю курсы на
протяжении 8 лет
3
История появления ORM
Нам нужно понять как развивались
технологии работы Java с базами
данных.
4
История появления ORM
Все-таки, развитие шло
не совсем так…
5
История появления ORM
…а скорее вот так
6
История появления ORM
Разные инструменты для разных задач:
• JDBC и ResultSet
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String coffeeName = rs.getString("COF_NAME");
}
• Data Access Object (DAO) для абстрагирования и инкапсулирования
доступа к источнику данных (JDBC).
DAO управляет соединением с источником данных для получения и
записи данных.
7
Что такое ORM?
wikipedia.org:
ORM (Object-relational mapping) — технология
программирования, которая связывает базы данных с концепциями
объектно-ориентированных языков программирования, создавая
«виртуальную объектную базу данных».
8
Что такое ORM?
Мартин Фаулер:
Паттерн Data Mapper (ORM) — это программная прослойка,
разделяющая объект и БД. Его обязанность — пересылать данные
между ними и изолировать их друг от друга.
При использовании Data Mapper'а объекты не нуждаются в знании о
существовании БД. Они не нуждаются в SQL-коде, и (естественно) в
информации о структуре БД.
9
Что такое ORM?
10
Что такое ORM?
• Задача ORM состоит в управлении трансляцией объектных
типов в записи баз данных и обратно.
• Основная проблема состоит в том, что объекты имеют
иерархическую структуру, а базы данных — реляционную.
11
Классы
• Классы определяют сущность
• Классы могут содержать данные и методы
• Классы могут наследовать данные и интерфейс других
классов
• В качестве данных классы могут содержать экземпляры
других классов, в том числе списки.
12
Базы данных
• Основным элементом БД является таблица
• Таблицы могут содержать только простые типы данных
• Таблицы не могут содержать массивы и списки
• Таблицы могут быть связаны внешними ключами
13
Примеры реляционной и объектной модели
CATALOG_ITEM отображается на иерархию
классов в зависимости от значения
ITEM_TYPE
Реляционная модель Объектная модель предметной области
14
Плюсы ORM
• Ручное преобразование (маппинг) большого числа таблиц в
объекты достаточно трудоемкий процесс, который ведет к
увеличению числа ошибок.
– ORM берет на себя операции по маппингу таблиц в объекты, абстрагируя
программиста от знания о конкретных СУБД.
• ORM обеспечивает механизм создания, изменения, удаления и
получения данных
• Управляет состоянием объектов. Отслеживает имеет ли объект
связь с базой данных.
– Объекты состояние которых может быть сохранено, а затем восстановлено
называются хранимыми или персистентными (от англ. «persistent» —
постоянный, устойчивый).
15
Минусы ORM
• Дополнительный слой абстракции может сказаться на
производительности.
• Решение простых задач может оказаться слишком сложным.
• ORM решение может не быть достаточно гибким.
• Дизайн системы может оказаться зависимым от конкретной ORM-
библиотеки.
• Вместе с ORM тяжело использовать хранимые процедуры БД.
16
Реализации ORM
• Hibernate/NHibernate www.hibernate.org (Java / .NET 1.1,2.0)
• Oracle® TopLink® (Java)
• Apache OpenJPA (Java)
• iBatis framework (Java, .NET) http://ibatis.apache.org/
• DataNucleus (Java) http://www.datanucleus.org/
• …
17
Литература и ссылки
• Мартин Фаулер “Архитектура корпоративных программных
приложений”. М., “Вильямс”, 2004
• http://en.wikipedia.org/wiki/Object-relational_mapping
18
Вопросы и контакты
Приз за лучший вопрос!!!
• Андрей Сидун
• andrii.sidun@globallogic.com
• skype: asidun

Object-Relational Mapping for Dummies

  • 1.
    ©2016 GlobalLogic Inc. Object-RelationalMapping for dummies Андрей Сидун
  • 2.
    2 Обо мне Андрей Сидун •Программирую с 1989 (хотел написать игру) • За зарплату программирую 15 лет, из них 6 на Java • Люблю делиться знаниями, поэтому читаю курсы на протяжении 8 лет
  • 3.
    3 История появления ORM Намнужно понять как развивались технологии работы Java с базами данных.
  • 4.
    4 История появления ORM Все-таки,развитие шло не совсем так…
  • 5.
  • 6.
    6 История появления ORM Разныеинструменты для разных задач: • JDBC и ResultSet ResultSet rs = stmt.executeQuery(query); while (rs.next()) { String coffeeName = rs.getString("COF_NAME"); } • Data Access Object (DAO) для абстрагирования и инкапсулирования доступа к источнику данных (JDBC). DAO управляет соединением с источником данных для получения и записи данных.
  • 7.
    7 Что такое ORM? wikipedia.org: ORM(Object-relational mapping) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».
  • 8.
    8 Что такое ORM? МартинФаулер: Паттерн Data Mapper (ORM) — это программная прослойка, разделяющая объект и БД. Его обязанность — пересылать данные между ними и изолировать их друг от друга. При использовании Data Mapper'а объекты не нуждаются в знании о существовании БД. Они не нуждаются в SQL-коде, и (естественно) в информации о структуре БД.
  • 9.
  • 10.
    10 Что такое ORM? •Задача ORM состоит в управлении трансляцией объектных типов в записи баз данных и обратно. • Основная проблема состоит в том, что объекты имеют иерархическую структуру, а базы данных — реляционную.
  • 11.
    11 Классы • Классы определяютсущность • Классы могут содержать данные и методы • Классы могут наследовать данные и интерфейс других классов • В качестве данных классы могут содержать экземпляры других классов, в том числе списки.
  • 12.
    12 Базы данных • Основнымэлементом БД является таблица • Таблицы могут содержать только простые типы данных • Таблицы не могут содержать массивы и списки • Таблицы могут быть связаны внешними ключами
  • 13.
    13 Примеры реляционной иобъектной модели CATALOG_ITEM отображается на иерархию классов в зависимости от значения ITEM_TYPE Реляционная модель Объектная модель предметной области
  • 14.
    14 Плюсы ORM • Ручноепреобразование (маппинг) большого числа таблиц в объекты достаточно трудоемкий процесс, который ведет к увеличению числа ошибок. – ORM берет на себя операции по маппингу таблиц в объекты, абстрагируя программиста от знания о конкретных СУБД. • ORM обеспечивает механизм создания, изменения, удаления и получения данных • Управляет состоянием объектов. Отслеживает имеет ли объект связь с базой данных. – Объекты состояние которых может быть сохранено, а затем восстановлено называются хранимыми или персистентными (от англ. «persistent» — постоянный, устойчивый).
  • 15.
    15 Минусы ORM • Дополнительныйслой абстракции может сказаться на производительности. • Решение простых задач может оказаться слишком сложным. • ORM решение может не быть достаточно гибким. • Дизайн системы может оказаться зависимым от конкретной ORM- библиотеки. • Вместе с ORM тяжело использовать хранимые процедуры БД.
  • 16.
    16 Реализации ORM • Hibernate/NHibernatewww.hibernate.org (Java / .NET 1.1,2.0) • Oracle® TopLink® (Java) • Apache OpenJPA (Java) • iBatis framework (Java, .NET) http://ibatis.apache.org/ • DataNucleus (Java) http://www.datanucleus.org/ • …
  • 17.
    17 Литература и ссылки •Мартин Фаулер “Архитектура корпоративных программных приложений”. М., “Вильямс”, 2004 • http://en.wikipedia.org/wiki/Object-relational_mapping
  • 18.
    18 Вопросы и контакты Призза лучший вопрос!!! • Андрей Сидун • andrii.sidun@globallogic.com • skype: asidun