Кто-то предложил использовать ORM для проекта, который я разрабатываю, но мне трудно найти информацию о том, что это такое и как оно работает. Может ли кто-нибудь дать мне краткое объяснение или ссылку на то, где я могу больше узнать об этом?
Объектно-реляционное сопоставление (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 экономит много времени, потому что:
Использование библиотеки ORM является более гибким, поскольку:
Но ORM может быть болью:
for
.Хорошо, используйте его. Какую бы ORM-библиотеку вы ни выбрали, все они используют одни и те же принципы. Здесь много библиотек ORM:
Если вы хотите попробовать библиотеку ORM в веб-программировании, вам лучше использовать весь стек фреймов, например:
Не пытайтесь писать свой собственный ORM, если вы не пытаетесь что-то узнать. Это гигантская работа, и старые люди занимали много времени и работали до того, как стали надежными.
Кто-нибудь может дать мне краткое объяснение...
Конечно.
ORM означает "объект для реляционного сопоставления", где
Объект - это тот, который вы используете с вашим языком программирования (в этом случае python)
Реляционная часть - это система реляционных баз данных (база данных), есть другие типы баз данных, но наиболее популярной является реляционная (вы знаете таблицы, столбцы, pk fk и т.д. например, Oracle MySQL, MS-SQL)
И наконец, Сопоставление - это место, где вы соединяете свои объекты с вашими таблицами.
В приложениях, где вы не используете структуру ORM, вы делаете это вручную. Использование структуры ORM позволит вам уменьшить шаблон, необходимый для создания решения.
Итак, скажем, у вас есть этот объект.
class Employee:
def __init__( self, name ):
self.__name = name
def getName( self ):
return self.__name
#etc.
а таблица
create table employee(
name varcar(10),
-- etc
)
Использование структуры ORM позволит вам автоматически сопоставить этот объект с записью db и написать что-то вроде:
emp = Employee("Ryan")
orm.save( emp )
И добавьте сотрудника в БД.
К сожалению, это было не так, но я надеюсь, что это достаточно просто, чтобы поймать другие прочитанные статьи.
ORM (Object Relational Mapper) - это часть/слой программного обеспечения, который помогает отображать объекты кода в вашу базу данных.
Некоторые обрабатывают больше аспектов, чем другие... но цель состоит в том, чтобы взять часть веса слоя данных со стороны разработчиков.
Вот краткое сообщение от Мартина Фаулера (Data Mapper):
Первая глава книги Hibernate Java Persistence with Hibernate (3-е изд.) имеет отличный обзор общих концепций ORM и обсуждает мотивацию и дизайн ORM. Очень рекомендуется, даже если вы не работаете с Java.
Storm - отличный вариант для тех, кто использует python.
Это огромная тема. Возьмите хорошую книгу для спящего режима, и она должна подробно объяснить ORM, прежде чем перейти к ничтожному суровому спящему материалу.
Как и все аббревиатуры, это двусмысленно, но я предполагаю, что они означают объектно-реляционный картограф - способ закрыть глаза и убедить нет SQL под ним, а скорее все объекты;-). Не совсем верно, конечно, и не без проблем - всегда красочный Джефф Этвуд описал ORM как Вьетнам CS;-). Но, если вы мало знаете или не имеете SQL, и имеете довольно простую/мелкомасштабную проблему, они могут сэкономить ваше время! -)
Объектная модель связана со следующими тремя концепциями Абстракция данных Инкапсуляция наследование Реляционная модель использовала базовую концепцию отношения или таблицы. Объектно-реляционное сопоставление (OR mapping) продукты объединяют возможности языка программирования объектов с реляционными базами данных.
DALMP http://code.google.com/p/dalmp/ может быть хорошим для php/mysql, который в настоящее время поддерживает множество бэкэндов кэшей, таких как redis/memcache/apc