powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / ORM в вопросах и ответах
25 сообщений из 46, страница 1 из 2
ORM в вопросах и ответах
    #32474513
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по следам /topic/78511\r
\r
Начнем издалека - откуду пришло, зачем нужно и т.д.\r
\r
\tМногозвенная система, основанная на идеологии “клиент-сервер” – это современное видение общей архитектуры ИС. В зависимости от сложности и требований к задаче количество “звеньев” может меняться, но основа – “клиент-сервер” – обычно существует в той или иной форме практически в любом современном ПО. За время своего существования термин изрядно потрепался – но суть его осталась прежней – а именно: разграничение обязанностей между различными частями системы исходя из соображений эффективности их выполнения этими частями. Сегодня существует достаточно большое количество решений и технологий делающих возможным проектирование и реализацию таких систем. \r
\tСамыми распространенными и востребованными на сегодняшний день являются 2х-звенные системы. В которых архитектура клиент-сервер в своей основе обязательно имеет 2 компонента – один из них это какая-либо СУБД, другой – клиентское приложение, использующее эту СУБД не только как место хранения, но и как место обработки информации. Такое распределение обязанностей оказалось весьма эффективным и достаточным для очень широкого круга задач. Этому в частности способствовало развитие SQL-серверов БД. Так все ведущие поставщики СУБД добавили в свои продукты процедурные расширения языка SQL – что значительно расширило круг решаемых на нем задач. При таком подходе клиенту отводится роль ввода и отображения информации (тонкий клиент) – в то время как вся функциональная составляющая (бизнес логика) программы сосредоточенна на сервере БД (например, в виде хранимых процедур). В общем-то, именно для таких задача (т.е. задач построения пользовательского интерфейса для ввода и отображения информации) и были предназначены DataSets – объекты, моделирующие табличные объекты серверной БД (т.е. таблицы и представления). Именно эти цели они и удовлетворяют. Пройдя достаточно долгий путь развития, сегодня они позволяют сравнительно просто и эффективно создавать сколь угодно сложный интерфейс пользователя. С другой стороны для проектирования серверных компонентов – т.е. компонентов обладающих своим поведением и реализующим какую-то часть бизнес логики системы они (DataSets) не удобны. Так как DataSet моделирует не бизнес-объект системы, а непосредственно низкоуровневый объект БД, что совершенно не соответствует тому, что необходимо для реализации системы спроектированной с использованием ООА и ООП. Т.е. налицо несоответствие между результатами проектирования – т.е. декомпозиция системы на множество классов и возможностями DataSet’ов в смысле реализации этих классов на каком-либо ОО-языке. Ясно, что необходим другой механизм доступа к БД, позволяющий бизнес-объектам сохранять свое состояние в БД. Средства, осуществляющие эту задачу, называют средствами Object Relation Mapping’а (ORM). \r
\r
продолжение следует...
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32474544
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
угу, давай, вводи в курс...

самое интересное начнется когда будем обсуждать передачу по ссылке или по значению, а так же stateless и stateful модели в привязке к серверным объектам...
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32474858
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Средства, осуществляющие эту задачу, называют средствами Object Relation Mapping’а (ORM).

Не путать с Object Role Modeling - методологией концептуального моделирования.


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32914119
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Часть 2


На самом деле информационная система не однородна и представляет набор слоев отвечающих за выполнение определенного круга задач. В частности слой, выполняющий сохранение бизнес-объектов в БД принято называть слоем доступа к данным (DAL). Традиционно задача реализации этой части системы в полном объеме являлась нетривиальной и, обычно, решалась только для частных случаев и для конкретных потребностей системы в целом. Тем не менее, сейчас работы в данном направлении уже привели к ощутимым результатам. Прежде всего, стоит отметить JDO – открытый стандарт на средства ORM в java. Его утверждение послужило толчком к разработке целого ряда открытых и коммерческих продуктов.

В JDO интересно еще и то, что фактически развивается декларативное управление объектами системы подобно тому, как сервер БД управляет объектами БД. Пока еще нельзя сравнивать эффективность алгоритмов СУБД и ORM-средств подобных Hibernate или серверов приложений – но общая тенденция налицо. Hibernate, например, предлагает язык HQL (hibernate query language) – sql-подобный язык где вы оперируете уже не таблицами и столбцами, а объектами и их атрибутами. Вы также как в sql можете задавать критерии объектов, которые должны быть возвращены запросом. При этом hibernate сам выбирает стратегию выполнения запроса. Т.е. возможна автоматическая оптимизация и подбор оптимального плана запроса исходя из различного рода статистических данных, которыми hibernate располагает в силу того, что, работая с hibernate, пользователь описывает только структуру сохраняемых объектов, то весь механизм напоминает механизм работы пользователя с СУБД.
Похожие тенденции просматриваются и среди серверов приложений. Их цель – предоставление среды функционирования различных бизнес-объектов. При этом форма работы отношений объектов с сервером также носит сильно выраженный декларативный характер.
Обычно сервер приложений берет на себя:
- управление жизненным циклом объектов системы.
- управление транзакциями
- безопасность
- стратегию сохранения объектов в каком-либо постоянном хранилище (РБД, LDAP и т.д.)
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32915437
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как у нас на текущий момент обстоят дела с маппингом объектов на хп?
Появилось это в Hibernat или JDO или еще где?
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32917003
Alexey Rovdo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Роман ДынникА как у нас на текущий момент обстоят дела с маппингом объектов на хп?
Появилось это в Hibernat или JDO или еще где?

У Versant пока только в таком виде
http://www.versant.com/resources/documentation/voajdocs/jdoql.html#projections
(9.13. Direct SQL and Stored Procedures).
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32917068
baza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здесь есть много хороших ссылок на тему ORM.
Кроме этого вот ссылка на статью, хотелось бы услышать о ней мнение всех присутствующих.
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32917249
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Много слов :)
ORM - это заменитель технологии работы через DataSet. Вместо работы со строками и полями DataSet, выборками на стандартном SQL, используется работа с объектами и их свойствами, выборками коллекций, в общем случае, на нестандартном языке.
Отсюда растут все плюсы и минусы.
На этом, в принципе, гербалайф в форуме можно было бы и завершать ? :))
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32917301
baza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TemplarМного слов :)
ORM - это заменитель технологии работы через DataSet. Вместо работы со строками и полями DataSet, выборками на стандартном SQL, используется работа с объектами и их свойствами, выборками коллекций, в общем случае, на нестандартном языке.
Отсюда растут все плюсы и минусы.
На этом, в принципе, гербалайф в форуме можно было бы и завершать ? :))

Не совсем понял, это насчет статьи или где?
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32917304
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BaZaНе совсем понял, это насчет статьи или где?
Да, статью можно ужать до этого абзаца :), плюс полистал аналогичные треды про болд/есо.
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32917307
baza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в любом случае спасибо за мнение :)
Просто эта тема меня очень интересует, вот собираю материалы...
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32917333
Templar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BaZaв любом случае спасибо за мнение :)
Просто эта тема меня очень интересует, вот собираю материалы...
Я и сам собираю :), только меня больше интересуют in-process надстройки (т.е. средствами самой СУБД) и объектные СУБД, точнее, когда же они станут промышленными и станут ли вообще... Например, вопросы построения оптимизатора запросов для такой СУБД, по моим представлениям, сталкиваются с концептуальными проблемами.
Будет время, заходите обсудить :)
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32918051
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник

Так, по поводу того, как обстоят дела с mapping’ом на хранимые процедуры
у hibernate. Текущая основная версия это hibernate 2 – хранимые процедуры не поддерживает. Так как эта возможность оказалась очень востребованной пользователями
то в hibernate 3(который сейчас уже на стадии beta-тестирования и доступен для скачивания) уже реализована возможность использовать SP для insert/update/delete – но
не query-support (для load) – hibernate team на этот счет заверяет, что скоро и это будет.

Кроме того, есть примеры реализации собственных Custom Persisters – hibernate позволяет расширить поведение по-умолчанию. Про подобные собственные разработки было слышно еще в 2003 году, когда 3 версии еще не было, так что если интересно можно попытаться связаться с разработчиками через форум на hibernate.org

Кроме того, если SP используются не для insert/update/delete/load, а для реализации других методов объекта – то их использование было возможно всегда через прямое использование jdbc-соединения которое всегда можно получить через session.getConnection(). При этом, так как соединение одно – не возникает никаких проблем с использованием транзакций (без JTA)

В тоже время я для /update/delete/load использую mapping в представления. Что не мешает мне больш у ю часть бизнес логики реализовывать на хранимых процедурах.


Насчет JDO - сейчас на подходе JDO2. В JCP как я понимаю идет война между сторонниками (считай инвесторами) EJB2/3 и сторонниками JDO2. Так что даже не знаю когда стандарт будет принят. Я пока с ним не знаком...
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32923288
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ООСУБД ныне модная, но малополезная на практике вещь...
Очень много пиара и рекламы (вспомним Cache) а реальных результатов никто не видел... :)
Обычные плоские таблицы имеют очень важный плюс: они ПРОСТЫ.
Их можно не заморачиваясь связывать как угодно и получать сколь угодно сложные выборки. Чего не скажешь про объёкты со сложной ОО-структурой, в которой надо сначала как следует разобраться, потом спроектировать, чтоб получить результат. А если нужен результат, не предусмотренный этой структурой ? Переделывать? Дорабатывать ?
Всё равно ОО-подходы не упростят работу с данными... и не ускорят.
Плоские таблицы всё равно победят ! Простотой и гибкостью победят. Всё гениальное просто !

Фотокаталог автошин должен быть круглым, потому что оптимально использует пространство на бумаге. :) :) :)
Вот он, триумф оптимизации и проектирования ! :) :) :)
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32923760
Alexey Rovdo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так в общем-то не ООСУБД то и речь.
Средства ORM как-раз таки и предназначены для использования с РСУБД.
РСУБД во многом замечательны, но от ОО-программирования и работы с объектами в приложении уйти проблематично, особенно если ты пишешь на ОО-языке Java.
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32958076
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть кто то сталкивался...
В Pear (библиотека для PHP) есть такой DataObject. Так вот позволяет ли он раскручивать иерархию классов при маппинге, или с помощью его можно настроить маппинг только на одну единственную таблицу?
Какие вообще есть еще средства маппинга на PHP?
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32959090
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ORM.NET теперь распространяется по лицензии GNU.
http://www.olero.com
http://sourceforge.net/projects/orm-net
Из плюсов - есть маппиг на хп.
Смортрел ли кто это средство?
Можно ли вообще назвать его ORM(по-моему это скорее средство генерации кода)?

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32967716
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вышел Hibernate 3

почитать про его возможности можно тут
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32967775
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень полезная статья о поддержки хранимых процедур в Hibernate. Интересна главным образом из-за того, что говорит и об отрицательной стороне использования ХП

http://www.hibernate.org/187.html
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32976258
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень полезная статья о поддержки хранимых процедур в Hibernate. Интересна главным образом из-за того, что говорит и об отрицательной стороне использования ХП
http://www.hibernate.org/187.html

В новом hibernate из стандартной аббревиатуры CRUD загадочным образом исчезла буква R :))
Почему то поддержку select-ов ч/з хп не посчитали необходимой.
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32977821
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там есть 16.5. Custom SQL for loading , хотя у меня пока руки не дошли все проверить и выяснить ;)
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32978377
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TemplarORM - это заменитель технологии работы через DataSet.
Хм. А есть практический опыт плюсов этой технологии?

Мой заказчик сейчас очень хотел именно объектный слой итп. Начал делать. Мгновенно потребовались стандартизированные механизмы. В итоге, вместо

База <-> (стандартный слой) <-> форма

получил

База <-> (стандартный слой) <-> объекты <-> (стандартный слой) форма.

Соответственно, получаются в основном лишние действия, большая часть задач идет через объекты транзитом, из одного стандартного слоя в другой. Но пришлось обзавестись парой кодогенераторов и другими дополнительными сущностями.

Итог. Я понимаю, чем объектный слой может быть удобен при многозвенной архитектуре. Я понимаю, чем он удобен при гетерогенной системе, когда часть всего - в БД, часть - идет от аппаратуры, часть объектов - виртуальны, и все это выглядит единообразно.

Вопрос: есть ли какие-то преимущества этого подхода для стандартных клиент-серверных задач? Какие? Практический опыт сравнения подходов?
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32978602
Alexey Rovdo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К основным плюсам ORM по всей видимости нужно отнести упрощение и ускорение разработки при использовании ОО-методов на всех этапах проектирования и реализации приложений.

Т.е. сначала создаем ОО-модель предметной области (например, UML-модель Rational Rose). Затем реализуем эту модель в коде приложения на ОО-языке программирования (Java, C++, C#). И наконец, с помощью ORM-инструментария в полуавтоматическом режиме строим реляционную модель БД и отображаем на нее нашу объектную структуру. В результате уходим от E/R-диаграмм и непосредственного использования SQL-запросов (снижаем требования к квалификации и объемам знаний проект-менеджеров и программистов).

Минусы ORM также совершенно очевидны: введение в приложения дополнительного уровня и замедление работы приложений, невозможность или неудобство использования многих специфических функций СУБД.

В целом ORM-инструменты в большей степени ориентированы на трехзвенные приложения. В классической клиент/серверной схеме некоторые из их плюсов проявляются слабее. Но здесь проблема скорее именно в конкретных реализациях ORM-продуктов. Так для Java-приложений использование JDO ORM реализаций даже в двухзвенке дает массу преимуществ. Но здесь возможно сказывается меньшее разнообразие доступного Java-инструментария для прямой работы с БД.
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32978881
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey RovdoТак для Java-приложений использование JDO ORM реализаций даже в двухзвенке дает массу преимуществ.
Алекс, спасибо за отклик, но я просил конкретику, а не "массу преимуществ". Допустим, если брать "использование ОО-методов" - я собственно и спрашиваю, какие преимущества получаю. То есть: чем вариант

UML -> классы -> структура БД -> работа с классами -> конкретные формы

Выигрывает по сравнению с вариантом

структура БД -> датасет -> форма.

Упомяну, что

а) меня не впечатляет аргумент "потому что круто" (aka "все на объектах" итп) - я хочу хорошую для меня и для пользователя программу. Соответственно - чем "оно" улучшает.

б) об удобстве для малограмотных программистов можно спорить - но вообще говоря, тема тоже совершенно неинтересная. Малограмотным нужно прогрессировать, а не лелеять свою малограмотность.
...
Рейтинг: 0 / 0
ORM в вопросах и ответах
    #32978903
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Rovdo
В целом ORM-инструменты в большей степени ориентированы на трехзвенные приложения.
Собственно, на текущий момент у меня есть впечатление, что объекты удобны для сервера приложений - но клиенту удобнее работать с сервером приложений опять-таки через датасеты (или подобные им структуры).

Фактически на текущий момент я сделал слой, позволяющий работать с объектами универсальным образом - то есть edit-у привязываться к свойству любого объекта итп. При этом оказалось, что почти все операции идут через этот слой - большинство объектов вообще не имеет каких-то дополнительных методов, призванных реализовывать дополнительную функциональность. Наконец, такие методы имеют в основном "виртуальные объекты" - некие менеджеры, которые встроены в общую схему в основном ради работы через тот же универсальный слой. Грубо говоря, если бы менеджер не просил для ввода "номер клиента", берущийся комбобоксом выбора из справочника - я мог бы и не делать менеджера "объектом данных"; сделать самым обычным объектом.
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / ORM в вопросах и ответах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]