Где строка между DAL и ORM?

Вам нужно создать функцию без параметров, которые вы можете использовать в качестве команды:

b = Button(admin, text='as', command=lambda: button('hey'))

См. раздел «Передача аргументов в обратные вызовы» в этом документе .

36
задан DJ. 26 February 2009 в 10:08
поделиться

4 ответа

ORM = Объектно-реляционное Отображение

В ORM, классы/объекты в приложении отображаются на таблицах базы данных и операциях для персистентности, иногда автоволшебно.

дал = Уровень доступа к данным

В DAL, операции базы данных скрыты позади фасада кода.

ORM является своего рода DAL, но не весь DALs ORMs.

52
ответ дан Steven A. Lowe 23 September 2019 в 22:31
поделиться

Любой объект ориентировал DAL, соединяющийся с любой системой хранения, которая не сохраняет реализации объектов ORM. ORM, как обычно понимают, означает, что чему-то нравится, в спящем режиме, но важной вещью является обработка несоответствий импеданса.

[Расширенный]

На уровне данных, импеданс несоответствия происходят при отображении данных одного типа (реляционного) в данные другого (OO).

, Например, как сколько раз Вы видели строку ниже в Вашем DAL?

db.AddInParameter(dbCommand, "Name", DbType.String, name);

Или другая сторона

customerId = Convert.ToInt64(dr["CustomerID"].ToString());

Много проблем подходят при отображении примитивных типов данных.

На уровне объектов, Ваш DAL должен возвращать структуры, которые Вы намереваетесь использовать. Будьте этим своего рода бизнес-объект или просто набор необработанных данных. И Ваш собственный DAL и ORM должны обработать это.

На уровне дизайна, объекты, которые Вы создаете, являются отражающими из Ваших хранивших данных. Таким образом, структурные различия могут произойти. Они также обрабатываются для Вас в решениях ORM, но Вы были бы вынуждены сделать то же в DAL. Например, в Вашем коде OO было бы хорошо реализовать надлежащее наследование, но это не делает тайный легко во что-то реляционное.

я просто хотел указать, что ORM является термином, введенным для продвижения продуктов, которые автоматизируют многое из того, что необходимо было бы уже сделать в DAL. Решения ORM сделают жизнь легче и предложат большое количество качества/выигрышей в производительности. Но это не изменяет то, что один из главных компонентов Вашего DAL создает Ваш собственный ORM.

5
ответ дан Ty. 23 September 2019 в 22:31
поделиться

Я думаю, что ORM способен к отображению любого набора объектов к реляционной базе данных; тогда как DAL характерен для Вашего приложения и вероятно не мог естественно быть расширен для поддержки других объектов.

Не только, что, но и ORM конкретно касается в отображение классы к/от объектам базы данных, в то время как DAL может просто быть способом для Вас получить доступ к данным в базе данных без любого отображения.

7
ответ дан matt b 23 September 2019 в 22:31
поделиться

ORM не существовал, когда я начал программировать. То, когда первый ORMs вышел, они были внешними инструментами, раньше создавало DAL. Теперь дни, DAL и ORM смешались. Вот почему много разработчиков использует термины попеременно.

самым известным примером ORM, который функционирует как DAL, является NHibernate. Другие примеры являются Дозвуковыми и CSLA.NET. Это все инструменты.NET. IIRC, инструменты ORM, запущенные в мире Java. Другие технологические стопки затем скопировали то, что сделал Java.

3
ответ дан Hector Sosa Jr 23 September 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: