object-relational mapping for dummies
Post on 14-Apr-2017
969 Views
Preview:
TRANSCRIPT
©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
top related