ORM (Object Relation Mapping) – технологія, яка працює з таблицями, як з об'єктами, яка безпосередньо до БД не звертається (хоч і це можливо).
JPA (Java Persistance API) – специфікація, документ, в якому описані правила та API для реалізації принципів ORM для Java (анотації, налаштування, підхід).
JPA має безліч реалізацій:
• OpenJPA (Apache)
• Hibernate
• TopLink (Oracle)
• EclipceLink
Часто використовується запис JPA API.
Hibernate - фреймворк між БД і додатком, якому не потрібно створювати прямі SQL запити через JDBC. Може застосовуватись у будь якому типі програми (web/desktop/Spring тощо).
Основна мета – робота з таблицями БД як із об'єктами.
Легше створювати правильний абстрактний рівень для додатки (застосовувати принципи ОВП).
На низькому рівні Hibernate виконує запити через JDBC
JDBC обов'язково потрібно знати
Переваги Hibernate
Більш високорівневий (ООП-орієнтований) код без ручної роботи JDBC API
Перенесення (перенесення на іншу БД переважно вимагає невеликих змін).
Багато прикладів та документації.
Робота з усіма популярними СУБД.
Робота з рішеннями NoSQL.
Інтеграція з фреймворками, IDE
Зручність (для тих, хто розібрався з основами)
Можна не заглиблюватися в SQL
Безліч налаштувань (транзакції, кеширування, генерація таблиць тощо).
Оновлення, покращення.
Недоліки Hibernate
У великих проектах можлива втрата продуктивності
Додатково потрібно вивчати API для Hibernate та JPA.
Складність для новачків, безліч налаштувань, специфіки, анотацій.
Менше контролю (доступ до БД на низькому рівні).
Прив'язка до свого API (дедалі менше).
Hibernate API
В ранних версиях Hibernate имел сильную привязку к своему API из-за чего переход на другую JPA реализации переходил не так быстро.
В данный момент с каждой версией происходит уклон в сторону JPA API.
Hibernate Configuaration
Для роботи з Hibernate необхідно створити конфігураційний файл hibernate.cfg.xml
Описываем сущность таблицы через класс
@Entity
public class ClientsDetails {
@Id
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Q&A
Дякую всім за заняття!🙌🏻
❗️🎓Тема уроку: 2 Огляд шаблону DAO
Нагадую, що дедлайн здачі домашніх робіт – до наступного уроку.
Якщо виникають складнощі, пишіть, допоможу із задоволенням 😌
Запис лекції тренер опублікує трохи пізніше 🖥
Не забудьте повторити матеріал та підготуватися до наступного уроку📚
Успіху і до зустрічі!🤩
1. Напишіть чек-лист тестування короткострокової події.
Інтернет-магазин робить промоакцію – протягом одного робочого дня з 8 ранку і до 22 вечора на
сайті мають бути знижки на різні категорії товарів у різний час:
•До 12:00 на взуття, з 12:00 і до 18:00 на курточки, а з 18:00 до 22:00 – на штани.
•Знижка на взуття 15%, на штани - 10%, а на куртки - 30%.
1. Створіть таблицю рішень для тестування системи продажів у кінотеатрі, згідно з нею на фільми діє знижка у таких випадках:
•Ранкова сесія в будь-який день – 15%
•Усі сеанси у глядацький день – 30%
•Пільгові категорії відвідувачів (студенти, пенсіонери, інваліди) за умови надання довідок – 30%
•Знижки підсумовуються, за виключенням знижки у глядацький день