Object-Relational Mapping for Dummies

Post on 14-Apr-2017

967 views 0 download

Transcript of Object-Relational Mapping for Dummies

©2016 GlobalLogic Inc.

Object-Relational Mapping for dummies

Андрей Сидун

2

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

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

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

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

3

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

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

4

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

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

5

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

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

6

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

• JDBC и ResultSetResultSet 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