Object-Relational Mapping for Dummies

18
©2016 GlobalLogic Inc. Object-Relational Mapping for dummies Андрей Сидун

Transcript of Object-Relational Mapping for Dummies

Page 1: Object-Relational Mapping for Dummies

©2016 GlobalLogic Inc.

Object-Relational Mapping for dummies

Андрей Сидун

Page 2: Object-Relational Mapping for Dummies

2

Обо мнеАндрей Сидун

• Программирую с 1989 (хотел написать игру)

• За зарплату программирую 15 лет, из них 6 на Java

• Люблю делиться знаниями, поэтому читаю курсы на протяжении 8 лет

Page 3: Object-Relational Mapping for Dummies

3

История появления ORM

Нам нужно понять как развивались технологии работы Java с базами данных.

Page 4: Object-Relational Mapping for Dummies

4

История появления ORM

Все-таки, развитие шло не совсем так…

Page 5: Object-Relational Mapping for Dummies

5

История появления ORM

…а скорее вот так

Page 6: Object-Relational Mapping for Dummies

6

История появления ORMРазные инструменты для разных задач:

• JDBC и ResultSetResultSet rs = stmt.executeQuery(query);while (rs.next()) {

String coffeeName = rs.getString("COF_NAME");}

• Data Access Object (DAO) для абстрагирования и инкапсулирования доступа к источнику данных (JDBC). DAO управляет соединением с источником данных для получения и записи данных.

Page 7: Object-Relational Mapping for Dummies

7

Что такое ORM?wikipedia.org:

ORM (Object-relational mapping) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».

Page 8: Object-Relational Mapping for Dummies

8

Что такое ORM?Мартин Фаулер:

Паттерн Data Mapper (ORM) — это программная прослойка, разделяющая объект и БД. Его обязанность — пересылать данные между ними и изолировать их друг от друга.

При использовании Data Mapper'а объекты не нуждаются в знании о существовании БД. Они не нуждаются в SQL-коде, и (естественно) в информации о структуре БД. 

Page 9: Object-Relational Mapping for Dummies

9

Что такое ORM?

Page 10: Object-Relational Mapping for Dummies

10

Что такое ORM?

• Задача ORM состоит в управлении трансляцией объектных типов в записи баз данных и обратно.

• Основная проблема состоит в том, что объекты имеют иерархическую структуру, а базы данных — реляционную.

Page 11: Object-Relational Mapping for Dummies

11

Классы

• Классы определяют сущность• Классы могут содержать данные и методы• Классы могут наследовать данные и интерфейс других

классов• В качестве данных классы могут содержать экземпляры

других классов, в том числе списки.

Page 12: Object-Relational Mapping for Dummies

12

Базы данных

• Основным элементом БД является таблица• Таблицы могут содержать только простые типы данных• Таблицы не могут содержать массивы и списки• Таблицы могут быть связаны внешними ключами

Page 13: Object-Relational Mapping for Dummies

13

Примеры реляционной и объектной модели

CATALOG_ITEM отображается на иерархию классов в зависимости от значения

ITEM_TYPE

Реляционная модель Объектная модель предметной области

Page 14: Object-Relational Mapping for Dummies

14

Плюсы ORM• Ручное преобразование (маппинг) большого числа таблиц в

объекты достаточно трудоемкий процесс, который ведет к увеличению числа ошибок.– ORM берет на себя операции по маппингу таблиц в объекты, абстрагируя

программиста от знания о конкретных СУБД.

• ORM обеспечивает механизм создания, изменения, удаления и получения данных

• Управляет состоянием объектов. Отслеживает имеет ли объект связь с базой данных.– Объекты состояние которых может быть сохранено, а затем восстановлено

называются хранимыми или персистентными (от англ. «persistent» — постоянный, устойчивый).

Page 15: Object-Relational Mapping for Dummies

15

Минусы ORM

• Дополнительный слой абстракции может сказаться на производительности.

• Решение простых задач может оказаться слишком сложным.• ORM решение может не быть достаточно гибким.• Дизайн системы может оказаться зависимым от конкретной ORM-

библиотеки.• Вместе с ORM тяжело использовать хранимые процедуры БД.

Page 16: Object-Relational Mapping for Dummies

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/• …

Page 17: Object-Relational Mapping for Dummies

17

Литература и ссылки

• Мартин Фаулер “Архитектура корпоративных программных приложений”. М., “Вильямс”, 2004

• http://en.wikipedia.org/wiki/Object-relational_mapping

Page 18: Object-Relational Mapping for Dummies

18

Вопросы и контакты

Приз за лучший вопрос!!!

• Андрей Сидун• [email protected]• skype: asidun