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.
11.
12.
13.
14. Hibernate - это не волшебная
кнопка
● Пасует в сложных
запросах
● Сложные связи между
таблицами
превращаются в
неожиданные объекты
● Плох для больших
выборок данных
● Не прост в изучении
15. MyBatis. Ликбез
● конфигурирование в коде или в специальном файле;
● удобные псевдонимы для имен классов;
● корректное разделение и хранение ваших SQL по
произвольному числу особенных файлов;
● динамическая безопасная сборка SQL (целых секций)
в зависимости от параметров, позволяет сократить
число запросов;
● возможность использования аннотаций или map -
файлов. Причем аннотации менее популярны.
16.
17.
18.
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
● Моя почта: zaleslaw.sin@gmail.com
● Мой профиль в Google+