Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
по следам /topic/78511\r \r Начнем издалека - откуду пришло, зачем нужно и т.д.\r \r \tМногозвенная система, основанная на идеологии “клиент-сервер” – это современное видение общей архитектуры ИС. В зависимости от сложности и требований к задаче количество “звеньев” может меняться, но основа – “клиент-сервер” – обычно существует в той или иной форме практически в любом современном ПО. За время своего существования термин изрядно потрепался – но суть его осталась прежней – а именно: разграничение обязанностей между различными частями системы исходя из соображений эффективности их выполнения этими частями. Сегодня существует достаточно большое количество решений и технологий делающих возможным проектирование и реализацию таких систем. \r \tСамыми распространенными и востребованными на сегодняшний день являются 2х-звенные системы. В которых архитектура клиент-сервер в своей основе обязательно имеет 2 компонента – один из них это какая-либо СУБД, другой – клиентское приложение, использующее эту СУБД не только как место хранения, но и как место обработки информации. Такое распределение обязанностей оказалось весьма эффективным и достаточным для очень широкого круга задач. Этому в частности способствовало развитие SQL-серверов БД. Так все ведущие поставщики СУБД добавили в свои продукты процедурные расширения языка SQL – что значительно расширило круг решаемых на нем задач. При таком подходе клиенту отводится роль ввода и отображения информации (тонкий клиент) – в то время как вся функциональная составляющая (бизнес логика) программы сосредоточенна на сервере БД (например, в виде хранимых процедур). В общем-то, именно для таких задача (т.е. задач построения пользовательского интерфейса для ввода и отображения информации) и были предназначены DataSets – объекты, моделирующие табличные объекты серверной БД (т.е. таблицы и представления). Именно эти цели они и удовлетворяют. Пройдя достаточно долгий путь развития, сегодня они позволяют сравнительно просто и эффективно создавать сколь угодно сложный интерфейс пользователя. С другой стороны для проектирования серверных компонентов – т.е. компонентов обладающих своим поведением и реализующим какую-то часть бизнес логики системы они (DataSets) не удобны. Так как DataSet моделирует не бизнес-объект системы, а непосредственно низкоуровневый объект БД, что совершенно не соответствует тому, что необходимо для реализации системы спроектированной с использованием ООА и ООП. Т.е. налицо несоответствие между результатами проектирования – т.е. декомпозиция системы на множество классов и возможностями DataSet’ов в смысле реализации этих классов на каком-либо ОО-языке. Ясно, что необходим другой механизм доступа к БД, позволяющий бизнес-объектам сохранять свое состояние в БД. Средства, осуществляющие эту задачу, называют средствами Object Relation Mapping’а (ORM). \r \r продолжение следует... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2004, 20:56 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
угу, давай, вводи в курс... самое интересное начнется когда будем обсуждать передачу по ссылке или по значению, а так же stateless и stateful модели в привязке к серверным объектам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2004, 21:50 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
Средства, осуществляющие эту задачу, называют средствами Object Relation Mapping’а (ORM). Не путать с Object Role Modeling - методологией концептуального моделирования. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 09:46 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
Часть 2 На самом деле информационная система не однородна и представляет набор слоев отвечающих за выполнение определенного круга задач. В частности слой, выполняющий сохранение бизнес-объектов в БД принято называть слоем доступа к данным (DAL). Традиционно задача реализации этой части системы в полном объеме являлась нетривиальной и, обычно, решалась только для частных случаев и для конкретных потребностей системы в целом. Тем не менее, сейчас работы в данном направлении уже привели к ощутимым результатам. Прежде всего, стоит отметить JDO – открытый стандарт на средства ORM в java. Его утверждение послужило толчком к разработке целого ряда открытых и коммерческих продуктов. В JDO интересно еще и то, что фактически развивается декларативное управление объектами системы подобно тому, как сервер БД управляет объектами БД. Пока еще нельзя сравнивать эффективность алгоритмов СУБД и ORM-средств подобных Hibernate или серверов приложений – но общая тенденция налицо. Hibernate, например, предлагает язык HQL (hibernate query language) – sql-подобный язык где вы оперируете уже не таблицами и столбцами, а объектами и их атрибутами. Вы также как в sql можете задавать критерии объектов, которые должны быть возвращены запросом. При этом hibernate сам выбирает стратегию выполнения запроса. Т.е. возможна автоматическая оптимизация и подбор оптимального плана запроса исходя из различного рода статистических данных, которыми hibernate располагает в силу того, что, работая с hibernate, пользователь описывает только структуру сохраняемых объектов, то весь механизм напоминает механизм работы пользователя с СУБД. Похожие тенденции просматриваются и среди серверов приложений. Их цель – предоставление среды функционирования различных бизнес-объектов. При этом форма работы отношений объектов с сервером также носит сильно выраженный декларативный характер. Обычно сервер приложений берет на себя: - управление жизненным циклом объектов системы. - управление транзакциями - безопасность - стратегию сохранения объектов в каком-либо постоянном хранилище (РБД, LDAP и т.д.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2005, 12:08 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
А как у нас на текущий момент обстоят дела с маппингом объектов на хп? Появилось это в Hibernat или JDO или еще где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 06:45 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
Роман ДынникА как у нас на текущий момент обстоят дела с маппингом объектов на хп? Появилось это в Hibernat или JDO или еще где? У Versant пока только в таком виде http://www.versant.com/resources/documentation/voajdocs/jdoql.html#projections (9.13. Direct SQL and Stored Procedures). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 16:46 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
здесь есть много хороших ссылок на тему ORM. Кроме этого вот ссылка на статью, хотелось бы услышать о ней мнение всех присутствующих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 18:12 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
Много слов :) ORM - это заменитель технологии работы через DataSet. Вместо работы со строками и полями DataSet, выборками на стандартном SQL, используется работа с объектами и их свойствами, выборками коллекций, в общем случае, на нестандартном языке. Отсюда растут все плюсы и минусы. На этом, в принципе, гербалайф в форуме можно было бы и завершать ? :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 19:57 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
TemplarМного слов :) ORM - это заменитель технологии работы через DataSet. Вместо работы со строками и полями DataSet, выборками на стандартном SQL, используется работа с объектами и их свойствами, выборками коллекций, в общем случае, на нестандартном языке. Отсюда растут все плюсы и минусы. На этом, в принципе, гербалайф в форуме можно было бы и завершать ? :)) Не совсем понял, это насчет статьи или где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 20:38 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
BaZaНе совсем понял, это насчет статьи или где? Да, статью можно ужать до этого абзаца :), плюс полистал аналогичные треды про болд/есо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 20:44 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
в любом случае спасибо за мнение :) Просто эта тема меня очень интересует, вот собираю материалы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 20:49 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
BaZaв любом случае спасибо за мнение :) Просто эта тема меня очень интересует, вот собираю материалы... Я и сам собираю :), только меня больше интересуют in-process надстройки (т.е. средствами самой СУБД) и объектные СУБД, точнее, когда же они станут промышленными и станут ли вообще... Например, вопросы построения оптимизатора запросов для такой СУБД, по моим представлениям, сталкиваются с концептуальными проблемами. Будет время, заходите обсудить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 21:31 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
Роман Дынник Так, по поводу того, как обстоят дела с 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. Так что даже не знаю когда стандарт будет принят. Я пока с ним не знаком... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 11:48 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
ООСУБД ныне модная, но малополезная на практике вещь... Очень много пиара и рекламы (вспомним Cache) а реальных результатов никто не видел... :) Обычные плоские таблицы имеют очень важный плюс: они ПРОСТЫ. Их можно не заморачиваясь связывать как угодно и получать сколь угодно сложные выборки. Чего не скажешь про объёкты со сложной ОО-структурой, в которой надо сначала как следует разобраться, потом спроектировать, чтоб получить результат. А если нужен результат, не предусмотренный этой структурой ? Переделывать? Дорабатывать ? Всё равно ОО-подходы не упростят работу с данными... и не ускорят. Плоские таблицы всё равно победят ! Простотой и гибкостью победят. Всё гениальное просто ! Фотокаталог автошин должен быть круглым, потому что оптимально использует пространство на бумаге. :) :) :) Вот он, триумф оптимизации и проектирования ! :) :) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2005, 14:09 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
Так в общем-то не ООСУБД то и речь. Средства ORM как-раз таки и предназначены для использования с РСУБД. РСУБД во многом замечательны, но от ОО-программирования и работы с объектами в приложении уйти проблематично, особенно если ты пишешь на ОО-языке Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2005, 16:29 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
Может быть кто то сталкивался... В Pear (библиотека для PHP) есть такой DataObject. Так вот позволяет ли он раскручивать иерархию классов при маппинге, или с помощью его можно настроить маппинг только на одну единственную таблицу? Какие вообще есть еще средства маппинга на PHP? Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 10:29 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
ORM.NET теперь распространяется по лицензии GNU. http://www.olero.com http://sourceforge.net/projects/orm-net Из плюсов - есть маппиг на хп. Смортрел ли кто это средство? Можно ли вообще назвать его ORM(по-моему это скорее средство генерации кода)? Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2005, 15:40 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
Очень полезная статья о поддержки хранимых процедур в Hibernate. Интересна главным образом из-за того, что говорит и об отрицательной стороне использования ХП http://www.hibernate.org/187.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2005, 11:49 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
Очень полезная статья о поддержки хранимых процедур в Hibernate. Интересна главным образом из-за того, что говорит и об отрицательной стороне использования ХП http://www.hibernate.org/187.html В новом hibernate из стандартной аббревиатуры CRUD загадочным образом исчезла буква R :)) Почему то поддержку select-ов ч/з хп не посчитали необходимой. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2005, 14:29 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
там есть 16.5. Custom SQL for loading , хотя у меня пока руки не дошли все проверить и выяснить ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2005, 10:41 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
TemplarORM - это заменитель технологии работы через DataSet. Хм. А есть практический опыт плюсов этой технологии? Мой заказчик сейчас очень хотел именно объектный слой итп. Начал делать. Мгновенно потребовались стандартизированные механизмы. В итоге, вместо База <-> (стандартный слой) <-> форма получил База <-> (стандартный слой) <-> объекты <-> (стандартный слой) форма. Соответственно, получаются в основном лишние действия, большая часть задач идет через объекты транзитом, из одного стандартного слоя в другой. Но пришлось обзавестись парой кодогенераторов и другими дополнительными сущностями. Итог. Я понимаю, чем объектный слой может быть удобен при многозвенной архитектуре. Я понимаю, чем он удобен при гетерогенной системе, когда часть всего - в БД, часть - идет от аппаратуры, часть объектов - виртуальны, и все это выглядит единообразно. Вопрос: есть ли какие-то преимущества этого подхода для стандартных клиент-серверных задач? Какие? Практический опыт сравнения подходов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2005, 13:03 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
К основным плюсам ORM по всей видимости нужно отнести упрощение и ускорение разработки при использовании ОО-методов на всех этапах проектирования и реализации приложений. Т.е. сначала создаем ОО-модель предметной области (например, UML-модель Rational Rose). Затем реализуем эту модель в коде приложения на ОО-языке программирования (Java, C++, C#). И наконец, с помощью ORM-инструментария в полуавтоматическом режиме строим реляционную модель БД и отображаем на нее нашу объектную структуру. В результате уходим от E/R-диаграмм и непосредственного использования SQL-запросов (снижаем требования к квалификации и объемам знаний проект-менеджеров и программистов). Минусы ORM также совершенно очевидны: введение в приложения дополнительного уровня и замедление работы приложений, невозможность или неудобство использования многих специфических функций СУБД. В целом ORM-инструменты в большей степени ориентированы на трехзвенные приложения. В классической клиент/серверной схеме некоторые из их плюсов проявляются слабее. Но здесь проблема скорее именно в конкретных реализациях ORM-продуктов. Так для Java-приложений использование JDO ORM реализаций даже в двухзвенке дает массу преимуществ. Но здесь возможно сказывается меньшее разнообразие доступного Java-инструментария для прямой работы с БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2005, 14:07 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
Alexey RovdoТак для Java-приложений использование JDO ORM реализаций даже в двухзвенке дает массу преимуществ. Алекс, спасибо за отклик, но я просил конкретику, а не "массу преимуществ". Допустим, если брать "использование ОО-методов" - я собственно и спрашиваю, какие преимущества получаю. То есть: чем вариант UML -> классы -> структура БД -> работа с классами -> конкретные формы Выигрывает по сравнению с вариантом структура БД -> датасет -> форма. Упомяну, что а) меня не впечатляет аргумент "потому что круто" (aka "все на объектах" итп) - я хочу хорошую для меня и для пользователя программу. Соответственно - чем "оно" улучшает. б) об удобстве для малограмотных программистов можно спорить - но вообще говоря, тема тоже совершенно неинтересная. Малограмотным нужно прогрессировать, а не лелеять свою малограмотность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2005, 15:21 |
|
||
|
ORM в вопросах и ответах
|
|||
|---|---|---|---|
|
#18+
Alexey Rovdo В целом ORM-инструменты в большей степени ориентированы на трехзвенные приложения. Собственно, на текущий момент у меня есть впечатление, что объекты удобны для сервера приложений - но клиенту удобнее работать с сервером приложений опять-таки через датасеты (или подобные им структуры). Фактически на текущий момент я сделал слой, позволяющий работать с объектами универсальным образом - то есть edit-у привязываться к свойству любого объекта итп. При этом оказалось, что почти все операции идут через этот слой - большинство объектов вообще не имеет каких-то дополнительных методов, призванных реализовывать дополнительную функциональность. Наконец, такие методы имеют в основном "виртуальные объекты" - некие менеджеры, которые встроены в общую схему в основном ради работы через тот же универсальный слой. Грубо говоря, если бы менеджер не просил для ввода "номер клиента", берущийся комбобоксом выбора из справочника - я мог бы и не делать менеджера "объектом данных"; сделать самым обычным объектом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2005, 15:27 |
|
||
|
|

start [/forum/search_topic.php?author=jura02&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
get settings: |
6ms |
get forum list: |
13ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 746ms |
| total: | 881ms |

| 0 / 0 |
