SlideShare a Scribd company logo
MyBatis & Hibernate,
давайте жить дружно
  Докладчик: Алексей Зиновьев
О себе



● аспирант ОмГУ, математик;
● занимаюсь теорией графов,
  прогнозированием пробок, исследованием
  транспортных систем;
● большой фанат различных Maps API;
● лидер GDG Omsk.
О чем этот доклад


Тот же
Ibatis,
только в
профиль
Тут будем разминаться
● Кто хоть раз использовал ORM
Тут будем разминаться
● Кто хоть раз использовал ORM
● Кто хоть раз использовал Hibernate
Тут будем разминаться
● Кто хоть раз использовал ORM
● Кто хоть раз использовал Hibernate
● Кто хоть раз использовал MyBatis
Тут будем разминаться
●   Кто хоть раз использовал ORM
●   Кто хоть раз использовал Hibernate
●   Кто хоть раз использовал MyBatis
●   Кто хоть раз плевал на все и писал свой
    QueryEnterpriseSQLBuilder
Цели
● Производительность
  программиста
● Масштабируемое
  приложение
● Быстрая работа с БД
● Кэширование
● Легкоподдерживаемое
  приложение
Жил-был один проект
      ● JDBC - лапша в коде
      ● Одна база readonly
      ● Требуется аналитическая
        отчетность
      ● Немного Hibernate для
        пары таблиц
      ● Сборка отчетов прямо в
        коде
Hibernate. Ликбез
● накопление очереди SQL- запросов и массированное
  выполнение (впрочем есть flush);
● HQL - собственный язык запросов;
● возможность использования аннотаций или map -
  файлов.
● Reverse Engineering;
● настройка каскадного удаления;
● 3 - уровневый кэш;
● Criteria API для недругов SQL.
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
Hibernate - это не волшебная
           кнопка
           ● Пасует в сложных
             запросах
           ● Сложные связи между
             таблицами
             превращаются в
             неожиданные объекты
           ● Плох для больших
             выборок данных
           ● Не прост в изучении
MyBatis. Ликбез

● конфигурирование в коде или в специальном файле;
● удобные псевдонимы для имен классов;
● корректное разделение и хранение ваших SQL по
  произвольному числу особенных файлов;
● динамическая безопасная сборка SQL (целых секций)
  в зависимости от параметров, позволяет сократить
  число запросов;
● возможность использования аннотаций или map -
  файлов. Причем аннотации менее популярны.
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
App case #1
  ● Новый проект
  ● Часто меняющаяся
    схема БД
  ● Неясная иерархия
    объектов
  ● Пока нечего
    анализировать
  ● Много write, мало read
  ● No JOINs
App case #2
    ● Есть давно рабочая БД
    ● Сбор аналитики,
      построение отчетов
    ● Хранимые процедуры
    ● Много read
    ● Нужны JOINs
    ● Приложение для
      работающего бизнеса
Для чего удобен JDBC
      ● Критичные по
        производительности
        места
      ● Сложные запросы,
        получающие простые
        ответы
      ● Для обучения новичков
      ● Мсье знает толк...
Для чего удобен Hibernate
         ● Нужно что - то
           кэшировать
         ● Множество CRUD -
           операций
         ● Есть стабильные, ясные
           сущности
         ● Beans для клиент -
           сервера
         ● Создание прототипа
Для чего удобен MyBatis
       ● хранения и разработки
         сложных SQL - запросов;
       ● для замены JDBC;
       ● для нетривиальных
         сущностей, которые
         собираются из
         нескольких таблиц;
       ● для урезанных версий
         сущностей;
       ● для динамических
         семейств SQL.
Добавление отчета
● добавляем 1 запрос типа select;
● добавляем 1 Result map;
● добавляем 1 функцию в DAO,
  получающюю список ResultMap объектов
  по псевдониму.

Эта функция возвращает множество строк
отчета. Изменение логики запроса приводит
лишь к изменению SQL - запроса.
Процесс внедрения
     ● Люди испытывают разные
       чувства к SQL
     ● Документирование сфер
       влияния
     ● Диаграммы dev -
       процессов (как на проекте
       добавить новый отчет)
     ● Чувство прекрасного
Hibernate + MyBatis
   ● Могут жить на одном проекте
   ● Строгое разграничение сфер
   ● Большие отчеты - MyBatis
   ● Entity - в Hibernate
   ● Высокая скорость разработки
   ● ORM на проекте - шаг к MVC
Контакты и полезные ссылки
●   Руководство по Hibernate
●   Статья в моем блоге по теме доклада
●   Сайт MyBatis
●   Моя почта: zaleslaw.sin@gmail.com
●   Мой профиль в Google+
Да пребудет с вами DAO!

More Related Content

What's hot (6)

PDF
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
Badoo Development
 
PDF
Артем Титаренко
CodeFest
 
PDF
Как устроено API в AppMetrica
AppTractor
 
PPTX
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
Mad Devs
 
PPTX
Migration of Cloud Services to Microsoft Azure Service Fabric
GlobalLogic Ukraine
 
PPTX
Поиск на своем сайте, обзор open source решений
aragozin
 
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
Badoo Development
 
Артем Титаренко
CodeFest
 
Как устроено API в AppMetrica
AppTractor
 
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
Mad Devs
 
Migration of Cloud Services to Microsoft Azure Service Fabric
GlobalLogic Ukraine
 
Поиск на своем сайте, обзор open source решений
aragozin
 

Viewers also liked (16)

PDF
TNAPS 3 Installation
tncor
 
PPT
Ejb in java. part 1.
Asya Dudnik
 
PDF
Apache Lucene + Hibernate = Hibernate Search
Vitebsk Miniq
 
PDF
Lecture 5 JSTL, custom tags, maven
Fahad Golra
 
PDF
Lecture 6 Web Sockets
Fahad Golra
 
PDF
Lecture 2: Servlets
Fahad Golra
 
PDF
Lecture 9 - Java Persistence, JPA 2
Fahad Golra
 
PDF
Lecture 10 - Java Server Faces (JSF)
Fahad Golra
 
PDF
Lecture 7 Web Services JAX-WS & JAX-RS
Fahad Golra
 
PDF
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)
Fahad Golra
 
PDF
Lecture 3: Servlets - Session Management
Fahad Golra
 
PDF
Tutorial 4 - Basics of Digital Photography
Fahad Golra
 
PDF
Enterprise Java Beans - EJB
Peter R. Egli
 
PPT
EJB .
ayyagari.vinay
 
PDF
Lecture 1: Introduction to JEE
Fahad Golra
 
PDF
Lecture 8 Enterprise Java Beans (EJB)
Fahad Golra
 
TNAPS 3 Installation
tncor
 
Ejb in java. part 1.
Asya Dudnik
 
Apache Lucene + Hibernate = Hibernate Search
Vitebsk Miniq
 
Lecture 5 JSTL, custom tags, maven
Fahad Golra
 
Lecture 6 Web Sockets
Fahad Golra
 
Lecture 2: Servlets
Fahad Golra
 
Lecture 9 - Java Persistence, JPA 2
Fahad Golra
 
Lecture 10 - Java Server Faces (JSF)
Fahad Golra
 
Lecture 7 Web Services JAX-WS & JAX-RS
Fahad Golra
 
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)
Fahad Golra
 
Lecture 3: Servlets - Session Management
Fahad Golra
 
Tutorial 4 - Basics of Digital Photography
Fahad Golra
 
Enterprise Java Beans - EJB
Peter R. Egli
 
Lecture 1: Introduction to JEE
Fahad Golra
 
Lecture 8 Enterprise Java Beans (EJB)
Fahad Golra
 
Ad

Similar to 2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно! (20)

PDF
02-Hibernate. Hibernate
Roman Brovko
 
PDF
Не все базы данных одинаково полезны
Sergey Xek
 
PDF
Выступление Сергея Аверина, Badoo, на High Performance Conference
EYevseyeva
 
PDF
Не все базы данных одинаково полезны
Sergey Xek
 
PPTX
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
Ontico
 
PPT
Введение в hibernate
Unguryan Vitaliy
 
PDF
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
DevDay
 
PPT
Ускорение веб-аналитики с использованием Column-oriented СУБД (Иван Авсеянко)
Ontico
 
PDF
Anton Tsitou "Cycle ORM and Graphs"
Fwdays
 
PPT
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
Pavel Tsukanov
 
PPTX
SQL________________________________.pptx
DenisMoscvin3
 
PPT
использование Hibernate java persistence.part 1.
Asya Dudnik
 
PPTX
Sphinx 2013
Andrew Aksyonoff
 
PPTX
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Ontico
 
PDF
Андрей Аксёнов, Sphinx Technologies Inc.
Ontico
 
PDF
Распространенные ошибки применения баз данных
Sergey Xek
 
PDF
Распространенные ошибки применения баз данных (Сергей Аверин)
Ontico
 
PDF
Сравнение систем СУБД
Sergey Ryabenko
 
PDF
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Badoo Development
 
PDF
Tk conf daniel-podolsky-sqlvsnosql
Daniel Podolsky
 
02-Hibernate. Hibernate
Roman Brovko
 
Не все базы данных одинаково полезны
Sergey Xek
 
Выступление Сергея Аверина, Badoo, на High Performance Conference
EYevseyeva
 
Не все базы данных одинаково полезны
Sergey Xek
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
Ontico
 
Введение в hibernate
Unguryan Vitaliy
 
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
DevDay
 
Ускорение веб-аналитики с использованием Column-oriented СУБД (Иван Авсеянко)
Ontico
 
Anton Tsitou "Cycle ORM and Graphs"
Fwdays
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
Pavel Tsukanov
 
SQL________________________________.pptx
DenisMoscvin3
 
использование Hibernate java persistence.part 1.
Asya Dudnik
 
Sphinx 2013
Andrew Aksyonoff
 
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Ontico
 
Андрей Аксёнов, Sphinx Technologies Inc.
Ontico
 
Распространенные ошибки применения баз данных
Sergey Xek
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Ontico
 
Сравнение систем СУБД
Sergey Ryabenko
 
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Badoo Development
 
Tk conf daniel-podolsky-sqlvsnosql
Daniel Podolsky
 
Ad

More from Омские ИТ-субботники (20)

PDF
2017-08-12 01 Алексей Коровянский. Привет, ARKit!
Омские ИТ-субботники
 
PDF
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
Омские ИТ-субботники
 
PDF
2017-05-06 02 Илья Сиганов. Зачем учить машины?
Омские ИТ-субботники
 
PDF
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
Омские ИТ-субботники
 
PDF
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
Омские ИТ-субботники
 
PDF
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
Омские ИТ-субботники
 
PDF
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
Омские ИТ-субботники
 
PDF
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
Омские ИТ-субботники
 
PDF
2017-02-04 02 Яков Лило. Решение задач
Омские ИТ-субботники
 
PDF
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
Омские ИТ-субботники
 
PDF
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
Омские ИТ-субботники
 
PDF
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
Омские ИТ-субботники
 
PDF
2016-12-03 03 Евгений Тюменцев. DSL на коленке
Омские ИТ-субботники
 
PDF
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
Омские ИТ-субботники
 
PDF
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
Омские ИТ-субботники
 
PDF
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
Омские ИТ-субботники
 
PDF
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
Омские ИТ-субботники
 
PDF
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
Омские ИТ-субботники
 
PDF
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
Омские ИТ-субботники
 
PDF
2016-09-17 03 Василий Полозов. WebRTC
Омские ИТ-субботники
 
2017-08-12 01 Алексей Коровянский. Привет, ARKit!
Омские ИТ-субботники
 
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
Омские ИТ-субботники
 
2017-05-06 02 Илья Сиганов. Зачем учить машины?
Омские ИТ-субботники
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
Омские ИТ-субботники
 
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
Омские ИТ-субботники
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
Омские ИТ-субботники
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
Омские ИТ-субботники
 
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
Омские ИТ-субботники
 
2017-02-04 02 Яков Лило. Решение задач
Омские ИТ-субботники
 
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
Омские ИТ-субботники
 
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
Омские ИТ-субботники
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
Омские ИТ-субботники
 
2016-12-03 03 Евгений Тюменцев. DSL на коленке
Омские ИТ-субботники
 
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
Омские ИТ-субботники
 
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
Омские ИТ-субботники
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
Омские ИТ-субботники
 
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
Омские ИТ-субботники
 
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
Омские ИТ-субботники
 
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
Омские ИТ-субботники
 
2016-09-17 03 Василий Полозов. WebRTC
Омские ИТ-субботники
 

2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!

  • 1. MyBatis & Hibernate, давайте жить дружно Докладчик: Алексей Зиновьев
  • 2. О себе ● аспирант ОмГУ, математик; ● занимаюсь теорией графов, прогнозированием пробок, исследованием транспортных систем; ● большой фанат различных Maps API; ● лидер GDG Omsk.
  • 3. О чем этот доклад Тот же Ibatis, только в профиль
  • 4. Тут будем разминаться ● Кто хоть раз использовал ORM
  • 5. Тут будем разминаться ● Кто хоть раз использовал ORM ● Кто хоть раз использовал Hibernate
  • 6. Тут будем разминаться ● Кто хоть раз использовал ORM ● Кто хоть раз использовал Hibernate ● Кто хоть раз использовал MyBatis
  • 7. Тут будем разминаться ● Кто хоть раз использовал ORM ● Кто хоть раз использовал Hibernate ● Кто хоть раз использовал MyBatis ● Кто хоть раз плевал на все и писал свой QueryEnterpriseSQLBuilder
  • 8. Цели ● Производительность программиста ● Масштабируемое приложение ● Быстрая работа с БД ● Кэширование ● Легкоподдерживаемое приложение
  • 9. Жил-был один проект ● JDBC - лапша в коде ● Одна база readonly ● Требуется аналитическая отчетность ● Немного Hibernate для пары таблиц ● Сборка отчетов прямо в коде
  • 10. Hibernate. Ликбез ● накопление очереди SQL- запросов и массированное выполнение (впрочем есть flush); ● HQL - собственный язык запросов; ● возможность использования аннотаций или map - файлов. ● Reverse Engineering; ● настройка каскадного удаления; ● 3 - уровневый кэш; ● Criteria API для недругов SQL.
  • 14. Hibernate - это не волшебная кнопка ● Пасует в сложных запросах ● Сложные связи между таблицами превращаются в неожиданные объекты ● Плох для больших выборок данных ● Не прост в изучении
  • 15. MyBatis. Ликбез ● конфигурирование в коде или в специальном файле; ● удобные псевдонимы для имен классов; ● корректное разделение и хранение ваших SQL по произвольному числу особенных файлов; ● динамическая безопасная сборка SQL (целых секций) в зависимости от параметров, позволяет сократить число запросов; ● возможность использования аннотаций или map - файлов. Причем аннотации менее популярны.
  • 19. App case #1 ● Новый проект ● Часто меняющаяся схема БД ● Неясная иерархия объектов ● Пока нечего анализировать ● Много write, мало read ● No JOINs
  • 20. App case #2 ● Есть давно рабочая БД ● Сбор аналитики, построение отчетов ● Хранимые процедуры ● Много read ● Нужны JOINs ● Приложение для работающего бизнеса
  • 21. Для чего удобен JDBC ● Критичные по производительности места ● Сложные запросы, получающие простые ответы ● Для обучения новичков ● Мсье знает толк...
  • 22. Для чего удобен Hibernate ● Нужно что - то кэшировать ● Множество CRUD - операций ● Есть стабильные, ясные сущности ● Beans для клиент - сервера ● Создание прототипа
  • 23. Для чего удобен MyBatis ● хранения и разработки сложных SQL - запросов; ● для замены JDBC; ● для нетривиальных сущностей, которые собираются из нескольких таблиц; ● для урезанных версий сущностей; ● для динамических семейств SQL.
  • 24. Добавление отчета ● добавляем 1 запрос типа select; ● добавляем 1 Result map; ● добавляем 1 функцию в DAO, получающюю список ResultMap объектов по псевдониму. Эта функция возвращает множество строк отчета. Изменение логики запроса приводит лишь к изменению SQL - запроса.
  • 25. Процесс внедрения ● Люди испытывают разные чувства к SQL ● Документирование сфер влияния ● Диаграммы dev - процессов (как на проекте добавить новый отчет) ● Чувство прекрасного
  • 26. Hibernate + MyBatis ● Могут жить на одном проекте ● Строгое разграничение сфер ● Большие отчеты - MyBatis ● Entity - в Hibernate ● Высокая скорость разработки ● ORM на проекте - шаг к MVC
  • 27. Контакты и полезные ссылки ● Руководство по Hibernate ● Статья в моем блоге по теме доклада ● Сайт MyBatis ● Моя почта: [email protected] ● Мой профиль в Google+
  • 28. Да пребудет с вами DAO!