SlideShare a Scribd company logo
©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

More Related Content

Viewers also liked (11)

PPTX
Java 8 Intro - Core Features
GlobalLogic Ukraine
 
PDF
How to Learn a Programming Language in 25 Minutes
GlobalLogic Ukraine
 
PPTX
Java Performance Boost
GlobalLogic Ukraine
 
PDF
Take a Look at Akka-Java
GlobalLogic Ukraine
 
PPTX
Nicety of Java 8 Multithreading
GlobalLogic Ukraine
 
PPTX
Spring vs EJB
GlobalLogic Ukraine
 
PPTX
Commercial Development from the Inside
GlobalLogic Ukraine
 
PPTX
Xin (Crossroads)
Xin Gu
 
PPTX
How Pony ORM translates Python generators to SQL queries
ponyorm
 
PPT
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
Pavel Tsukanov
 
PPTX
Антон Зотов - "Від інженера до AVP. Мій досвід побудови кар’єри в ІТ" Kharkiv...
Lviv Startup Club
 
Java 8 Intro - Core Features
GlobalLogic Ukraine
 
How to Learn a Programming Language in 25 Minutes
GlobalLogic Ukraine
 
Java Performance Boost
GlobalLogic Ukraine
 
Take a Look at Akka-Java
GlobalLogic Ukraine
 
Nicety of Java 8 Multithreading
GlobalLogic Ukraine
 
Spring vs EJB
GlobalLogic Ukraine
 
Commercial Development from the Inside
GlobalLogic Ukraine
 
Xin (Crossroads)
Xin Gu
 
How Pony ORM translates Python generators to SQL queries
ponyorm
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
Pavel Tsukanov
 
Антон Зотов - "Від інженера до AVP. Мій досвід побудови кар’єри в ІТ" Kharkiv...
Lviv Startup Club
 

Similar to Object-Relational Mapping for Dummies (20)

PPT
базы данных
Алексей Орловский
 
PDF
14 - Базы данных. Основные объекты базы данных и язык SQL
Roman Brovko
 
PPTX
Microsoft access 2007
Andrey Dolinin
 
PPTX
Microsoft access 2007
Andrey Dolinin
 
PDF
9946
nreferat
 
PDF
11 - Web-технологии. Работа с СУБД
Roman Brovko
 
PPT
основные понятия баз данных
23padopi
 
PPT
основные понятия баз данных
23padopi
 
PDF
Моделирование для NoSQL БД
Andrew Sovtsov
 
PPTX
разработка бизнес приложений (9)
Alexander Gornik
 
PPTX
РИТ-2014: Ноотропы RDF для BigData
Leonid Yuriev
 
PDF
HighLoad systems: tips & tricks
Sveta Bozhko
 
PPTX
Витрины данных - загрузка данных, разработка процессов ETL
Sergey Sukharev
 
PPTX
Coding like a sex
Max Arshinov
 
PPTX
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
PPTX
10 субд
Evgeniy Golendyhin
 
PPTX
Presentation1
Kostya Privalov
 
PPTX
разработка бизнес приложений (7)
Alexander Gornik
 
PPT
раздел 2 модели и типы данных
tatianabtt
 
PPTX
Управление Данными. Лекция 1
Dmitriy Krukov
 
базы данных
Алексей Орловский
 
14 - Базы данных. Основные объекты базы данных и язык SQL
Roman Brovko
 
Microsoft access 2007
Andrey Dolinin
 
Microsoft access 2007
Andrey Dolinin
 
9946
nreferat
 
11 - Web-технологии. Работа с СУБД
Roman Brovko
 
основные понятия баз данных
23padopi
 
основные понятия баз данных
23padopi
 
Моделирование для NoSQL БД
Andrew Sovtsov
 
разработка бизнес приложений (9)
Alexander Gornik
 
РИТ-2014: Ноотропы RDF для BigData
Leonid Yuriev
 
HighLoad systems: tips & tricks
Sveta Bozhko
 
Витрины данных - загрузка данных, разработка процессов ETL
Sergey Sukharev
 
Coding like a sex
Max Arshinov
 
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
10 субд
Evgeniy Golendyhin
 
Presentation1
Kostya Privalov
 
разработка бизнес приложений (7)
Alexander Gornik
 
раздел 2 модели и типы данных
tatianabtt
 
Управление Данными. Лекция 1
Dmitriy Krukov
 
Ad

More from GlobalLogic Ukraine (20)

PDF
GlobalLogic JavaScript Community Webinar #21 “Інтерв’ю без заспокійливих”
GlobalLogic Ukraine
 
PPTX
Deadlocks in SQL - Turning Fear Into Understanding (by Sergii Stets)
GlobalLogic Ukraine
 
PDF
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Ukraine
 
PDF
GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
GlobalLogic Ukraine
 
PDF
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
GlobalLogic Ukraine
 
PDF
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic Ukraine
 
PPTX
Штучний інтелект як допомога в навчанні, а не замінник.pptx
GlobalLogic Ukraine
 
PPTX
Задачі AI-розробника як застосовується штучний інтелект.pptx
GlobalLogic Ukraine
 
PPTX
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
GlobalLogic Ukraine
 
PDF
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Ukraine
 
PDF
JavaScript Community Webinar #14 "Why Is Git Rebase?"
GlobalLogic Ukraine
 
PDF
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic Ukraine
 
PPTX
Страх і сила помилок - IT Inside від GlobalLogic Education
GlobalLogic Ukraine
 
PDF
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic Ukraine
 
PDF
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic Ukraine
 
PDF
“How to Secure Your Applications With a Keycloak?
GlobalLogic Ukraine
 
PDF
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Ukraine
 
PPTX
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Ukraine
 
PDF
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic Ukraine
 
PDF
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
GlobalLogic Ukraine
 
GlobalLogic JavaScript Community Webinar #21 “Інтерв’ю без заспокійливих”
GlobalLogic Ukraine
 
Deadlocks in SQL - Turning Fear Into Understanding (by Sergii Stets)
GlobalLogic Ukraine
 
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Ukraine
 
GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
GlobalLogic Ukraine
 
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
GlobalLogic Ukraine
 
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic Ukraine
 
Штучний інтелект як допомога в навчанні, а не замінник.pptx
GlobalLogic Ukraine
 
Задачі AI-розробника як застосовується штучний інтелект.pptx
GlobalLogic Ukraine
 
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
GlobalLogic Ukraine
 
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Ukraine
 
JavaScript Community Webinar #14 "Why Is Git Rebase?"
GlobalLogic Ukraine
 
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic Ukraine
 
Страх і сила помилок - IT Inside від GlobalLogic Education
GlobalLogic Ukraine
 
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic Ukraine
 
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic Ukraine
 
“How to Secure Your Applications With a Keycloak?
GlobalLogic Ukraine
 
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Ukraine
 
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Ukraine
 
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic Ukraine
 
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
GlobalLogic Ukraine
 
Ad

Object-Relational Mapping for Dummies

  • 1. ©2016 GlobalLogic Inc. Object-Relational Mapping for dummies Андрей Сидун
  • 2. 2 Обо мне Андрей Сидун • Программирую с 1989 (хотел написать игру) • За зарплату программирую 15 лет, из них 6 на Java • Люблю делиться знаниями, поэтому читаю курсы на протяжении 8 лет
  • 3. 3 История появления ORM Нам нужно понять как развивались технологии работы Java с базами данных.
  • 4. 4 История появления ORM Все-таки, развитие шло не совсем так…
  • 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-коде, и (естественно) в информации о структуре БД.
  • 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/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. 17 Литература и ссылки • Мартин Фаулер “Архитектура корпоративных программных приложений”. М., “Вильямс”, 2004 • http://en.wikipedia.org/wiki/Object-relational_mapping
  • 18. 18 Вопросы и контакты Приз за лучший вопрос!!! • Андрей Сидун • [email protected] • skype: asidun