Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Object-Relational Mapping for Dummies

1,344 views

Published on

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.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Object-Relational Mapping for Dummies

  1. 1. ©2016 GlobalLogic Inc. Object-Relational Mapping for dummies Андрей Сидун
  2. 2. 2 Обо мне Андрей Сидун • Программирую с 1989 (хотел написать игру) • За зарплату программирую 15 лет, из них 6 на Java • Люблю делиться знаниями, поэтому читаю курсы на протяжении 8 лет
  3. 3. 3 История появления ORM Нам нужно понять как развивались технологии работы Java с базами данных.
  4. 4. 4 История появления ORM Все-таки, развитие шло не совсем так…
  5. 5. 5 История появления ORM …а скорее вот так
  6. 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. 7 Что такое ORM? wikipedia.org: ORM (Object-relational mapping) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».
  8. 8. 8 Что такое ORM? Мартин Фаулер: Паттерн Data Mapper (ORM) — это программная прослойка, разделяющая объект и БД. Его обязанность — пересылать данные между ними и изолировать их друг от друга. При использовании Data Mapper'а объекты не нуждаются в знании о существовании БД. Они не нуждаются в SQL-коде, и (естественно) в информации о структуре БД.
  9. 9. 9 Что такое ORM?
  10. 10. 10 Что такое ORM? • Задача ORM состоит в управлении трансляцией объектных типов в записи баз данных и обратно. • Основная проблема состоит в том, что объекты имеют иерархическую структуру, а базы данных — реляционную.
  11. 11. 11 Классы • Классы определяют сущность • Классы могут содержать данные и методы • Классы могут наследовать данные и интерфейс других классов • В качестве данных классы могут содержать экземпляры других классов, в том числе списки.
  12. 12. 12 Базы данных • Основным элементом БД является таблица • Таблицы могут содержать только простые типы данных • Таблицы не могут содержать массивы и списки • Таблицы могут быть связаны внешними ключами
  13. 13. 13 Примеры реляционной и объектной модели CATALOG_ITEM отображается на иерархию классов в зависимости от значения ITEM_TYPE Реляционная модель Объектная модель предметной области
  14. 14. 14 Плюсы ORM • Ручное преобразование (маппинг) большого числа таблиц в объекты достаточно трудоемкий процесс, который ведет к увеличению числа ошибок. – ORM берет на себя операции по маппингу таблиц в объекты, абстрагируя программиста от знания о конкретных СУБД. • ORM обеспечивает механизм создания, изменения, удаления и получения данных • Управляет состоянием объектов. Отслеживает имеет ли объект связь с базой данных. – Объекты состояние которых может быть сохранено, а затем восстановлено называются хранимыми или персистентными (от англ. «persistent» — постоянный, устойчивый).
  15. 15. 15 Минусы ORM • Дополнительный слой абстракции может сказаться на производительности. • Решение простых задач может оказаться слишком сложным. • ORM решение может не быть достаточно гибким. • Дизайн системы может оказаться зависимым от конкретной ORM- библиотеки. • Вместе с ORM тяжело использовать хранимые процедуры БД.
  16. 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. 17 Литература и ссылки • Мартин Фаулер “Архитектура корпоративных программных приложений”. М., “Вильямс”, 2004 • http://en.wikipedia.org/wiki/Object-relational_mapping
  18. 18. 18 Вопросы и контакты Приз за лучший вопрос!!! • Андрей Сидун • andrii.sidun@globallogic.com • skype: asidun

×