JavaRush /Курси /Модуль 3: Django /Вступ до ORM та його переваги

Вступ до ORM та його переваги

Модуль 3: Django
Рівень 7 , Лекція 0
Відкрита

Якщо ти хоч раз стикався з базами даних, то знаєш, що для взаємодії з базою треба писати SQL-запити. Наприклад, щоб витягти список товарів з таблиці бази даних, ти б написав щось типу такого запиту:

SELECT * FROM products WHERE price > 100;

Це працює, але через якийсь час у тебе починає рябіти в очах від SQL-коду. До того ж SQL-запити потрібно вручну адаптувати під різні бази даних (PostgreSQL, MySQL, SQLite і т.д.). А якщо ти раптом помилився у запиті, база даних може повернути загадкове повідомлення на кшталт "ERROR 1064", а ти залишишся в здивуванні.

І тут на допомогу приходить ORM! Object-Relational Mapping (Об'єктно-реляційне відображення) — це спосіб взаємодії між твоїм додатком і базою даних через код без необхідності писати SQL-запити вручну.

Отже, чому ORM — це круто?

  1. Абстракція бази даних
    ORM дозволяє працювати з базою даних, як зі звичайними об'єктами Python. Ви описуєте структуру ваших даних у вигляді класів, а ORM бере на себе все інше: створення таблиць, виконання запитів, внесення змін тощо.

  2. Код стає чистішим
    Замість довгих SQL-запитів ви пишете компактні та зручні методи. Наприклад, замість SQL-запиту:

    SELECT * FROM products WHERE price > 100;
    

    Ви можете написати Python-код:

    Product.objects.filter(price__gt=100)
    
  3. Підвищення продуктивності
    ORM бере на себе більшу частину рутини, дозволяючи вам зосередитися на бізнес-логіці застосунку, а не на низькорівневих деталях взаємодії з базою даних.

  4. Портативність між базами даних
    З ORM ваш код стає незалежним від конкретної бази даних. Хочете змінити SQLite на PostgreSQL? Без проблем! Просто змініть налаштування проєкту, і Django ORM зробить усе інше.

Django ORM: короткий огляд

Django поставляється з потужною вбудованою системою ORM. Вона дозволяє вам:

  • Створювати таблиці бази даних за допомогою Python-класів.
  • Виконувати CRUD-операції (створення, читання, оновлення та видалення даних) без написання SQL-запитів.
  • Працювати з фільтрацією, сортуванням, агрегацією даних та багато іншого.

Коли ви використовуєте Django ORM, кожен клас, який ви визначаєте як модель, відповідає одній таблиці в базі даних. Поля класу — це колонки таблиці. А екземпляри цього класу — це рядки таблиці. Ось така хитра і зручна магія.

Ось, наприклад, клас моделі:

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    description = models.TextField()

Цей код створить таблицю в базі даних, що відповідає моделі Product, з колонками name, price та description.

Як працює ORM: пояснення на пальцях

Уявіть собі ресторан. У вас є кухонний персонал (Django ORM), який готує страви (SQL-запити), а ви — офіціант (розробник), який просто приймає замовлення і спілкується з клієнтами. Вам не потрібно розуміти, як шеф-кухар готує пасту карбонара — достатньо сказати, що ви хочете пасту. Аналогічно з ORM: ви кажете, що хочете отримати список продуктів дорожче 100, а ORM сама розбереться із SQL-запитом.

Приклад використання Django ORM

  1. Створення об'єкта

    Створимо новий продукт:

    product = Product(name="Лампа", price=500.99, description="Настільна лампа з LED-підсвіткою")
    product.save()
    

    Тут ми створили об'єкт Product і зберегли його в базі даних методом save().

  2. Читання даних

    Отримаємо всі продукти з таблиці:

    products = Product.objects.all()
    

    Цей код поверне список усіх об'єктів з таблиці Product.

  3. Фільтрація даних

    Отримаємо лише ті продукти, ціна яких більша за 100:

    expensive_products = Product.objects.filter(price__gt=100)
    

    Цей метод повертає відфільтрований список об'єктів.

  4. Оновлення запису

    Змінимо ціну продукту:

    lamp = Product.objects.get(name="Лампа")
    lamp.price = 450.49
    lamp.save()
    
  5. Видалення запису

    Видалимо продукт з бази:

    lamp = Product.objects.get(name="Лампа")
    lamp.delete()
    

Переваги Django ORM: ще раз підсумуємо

  • Швидкість та зручність: ORM дозволяє працювати з базами даних, використовуючи звичний Python. Тобі не потрібно вчити синтаксис SQL чи переживати за правильність запитів.
  • Менше помилок: ORM генерує оптимізований SQL-код, який зазвичай не страждає від типових помилок ручного написання SQL.
  • Управління міграціями: ORM автоматично створює та застосовує зміни в структурі бази даних, що спрощує розробку.

Короткий словник термінів

Перш ніж ми продовжимо нашу подорож по Django ORM, ось короткий список нових термінів, які вам потрібно знати:

  • Модель (Model): клас у Python, який описує структуру даних. Кожна модель відповідає одній таблиці в базі даних.
  • Поле (Field): змінна всередині моделі, яка описує одну колонку таблиці.
  • Об'єкт QuerySet: набір даних, який ви отримуєте, застосовуючи запити до моделі (наприклад, filter, all і т.д.).
  • Міграція: спосіб внесення змін до структури бази даних (таблиці, колонки і т.д.).

А що далі?

Тепер, коли ви зрозуміли, навіщо потрібен ORM і як він працює, ми перейдемо до практики. У наступній лекції ми створимо першу модель у вашому Django-додатку. Потім додамо до неї поля, налаштуємо атрибути та навчимося керувати цією моделлю через ORM. Готуйтеся, буде багато цікавого!

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ