Это технология, которая позволяет разработчикам взаимодействовать с реляционными базами данных, используя объектно-ориентированные парадигмы программирования. ORM автоматизирует преобразование данных между несовместимыми типами систем, таких как объекты в программном коде и таблицы в базе данных.
🚩Основные особенности ORM
🟠Абстракция базы данных
ORM позволяет разработчикам работать с базой данных через объекты, не написав SQL-код напрямую. Это упрощает разработку и делает код более читабельным и поддерживаемым.
🟠Маппинг классов и таблиц
Классы в приложении сопоставляются с таблицами в базе данных, а свойства классов — со столбцами таблиц. Это позволяет автоматически преобразовывать данные при сохранении и извлечении объектов.
🟠Автоматическое управление связями
ORM поддерживает управление отношениями между объектами, такими как "один-к-одному", "один-ко-многим" и "многие-ко-многим".
🟠Кэширование и оптимизация запросов
ORM может кешировать запросы и результаты для улучшения производительности.
🚩Плюсы
➕Скорость разработки
ORM снижает количество ручного кода, необходимого для работы с базой данных, что ускоряет процесс разработки.
➕Поддерживаемость
Код на ORM более понятен и легко поддерживается, поскольку использует объектно-ориентированные принципы.
➕Безопасность
ORM помогает избежать SQL-инъекций, так как запросы строятся с помощью методов и свойств классов.
➕Портативность
Приложение, написанное с использованием ORM, легче адаптируется к различным реляционным базам данных, поскольку маппинг обеспечивает абстракцию от конкретных SQL-диалектов.
🚩Популярные библиотеки и фреймворки ORM
🟠Hibernate
Java
🟠Entity Framework
.NET
🟠Django ORM
Python
🟠SQLAlchemy
Python
🟠ActiveRecord
Ruby on Rails
🚩Примеры
Модель
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
birth_date = models.DateField()
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
Создание записи
author = Author(name='J.K. Rowling', birth_date='1965-07-31')
author.save()
book = Book(title='Harry Potter and the Philosopher\'s Stone', author=author)
book.save()
Извлечение данных
books = Book.objects.filter(author__name='J.K. Rowling')
for book in books:
print(book.title)
Ставь 👍 и забирай 📚 Базу знаний