This presentation deals with the evolution of object-relational mapping, its essence and goals. There is also an accent on challenges of ORM use, its benefits and disadvantages.
This presentation by Andrii Sidun (Software Engineer, GlobalLogic) was delivered at Java.io 3.0 conference in Kharkiv on March 22, 2016.
2. 2
Обо мне
Андрей Сидун
• Программирую с 1989 (хотел
написать игру)
• За зарплату программирую 15 лет,
из них 6 на Java
• Люблю делиться знаниями,
поэтому читаю курсы на
протяжении 8 лет
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 тяжело использовать хранимые процедуры БД.
17. 17
Литература и ссылки
• Мартин Фаулер “Архитектура корпоративных программных
приложений”. М., “Вильямс”, 2004
• http://en.wikipedia.org/wiki/Object-relational_mapping
18. 18
Вопросы и контакты
Приз за лучший вопрос!!!
• Андрей Сидун
• andrii.sidun@globallogic.com
• skype: asidun