Введение
Объектно-реляционное отображение (ORM) - это метод, который позволяет запрашивать и манипулировать данными из базы данных с использованием объектно-ориентированной парадигмы. Говоря об ORM, большинство людей ссылаются на библиотеку, которая реализует технику объектно-реляционного отображения, отсюда и фраза «ORM».
Библиотека ORM - это совершенно обычная библиотека, написанная на выбранном вами языке, которая инкапсулирует код, необходимый для манипулирования данными, поэтому вы больше не используете SQL; вы взаимодействуете непосредственно с объектом на том же языке, который используете.
Например, вот совершенно воображаемый случай с псевдоязыком:
У вас есть класс книг, вы хотите получить все книги, автором которых является "Линус". Вручную вы бы сделали что-то вроде этого:
book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
book = new Book();
book.setAuthor(row.get('author');
book_list.add(book);
}
С библиотекой ORM это будет выглядеть так:
book_list = BookTable.query(author="Linus");
Механическая часть автоматически обрабатывается с помощью библиотеки ORM.
Плюсы и минусы
Использование ORM экономит много времени, потому что:
- СУХОЙ : Вы пишете свою модель данных только в одном месте, и вам проще обновлять, поддерживать и повторно использовать код.
- Многое делается автоматически, от обработки базы данных до I18N .
- Это заставляет вас писать код MVC , что в итоге делает ваш код немного чище.
- Вам не нужно писать плохо сформированный SQL (большинство веб-программистов действительно сосут его, потому что SQL трактуется как «вспомогательный» язык, хотя на самом деле он очень мощный и сложный).
- Санобработка; использовать подготовленные операторы или транзакции так же просто, как вызвать метод.
Использование библиотеки ORM более гибко, потому что:
- Это соответствует вашему естественному способу кодирования (это ваш язык!).
- Он абстрагирует систему БД, поэтому вы можете изменить ее, когда захотите.
- Модель слабо связана с остальной частью приложения, поэтому вы можете изменить ее или использовать где-либо еще.
- Это позволяет вам использовать ООП, как наследование данных без головной боли.
Но ORM может быть болью
- Вы должны изучить это, и библиотеки ORM не являются легкими инструментами;
- Вы должны настроить это. Та же проблема.
- Производительность нормальная для обычных запросов, но мастер SQL всегда будет лучше с собственным SQL для больших проектов.
- Абстрагирует БД. Хотя это нормально, если вы знаете, что происходит за кулисами, это ловушка для новых программистов, которые могут писать очень жадные заявления, как тяжелый удар в
for
цикле.
Как узнать об ORM?
Ну, используйте один. Какую бы библиотеку ORM вы ни выбрали, все они используют одни и те же принципы. Здесь много библиотек ORM:
Если вы хотите попробовать библиотеку ORM в веб-программировании, вам лучше использовать весь стек фреймворков, например:
- Symfony (PHP, использующий Propel или Doctrine).
- Django (Python, использующий внутренний ORM).
Не пытайтесь написать свой собственный ORM, если вы не пытаетесь чему-то научиться. Это гигантская работа, и старым потребовалось много времени и работы, прежде чем они стали надежными.