|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыТак язык - это желаемое или необходимое? Срорее, необходимое. зыПочему не может быть ORM только для конкретной базы? Отчего ж не может, может. L2S - для конкретного типа сервера (MSSQL), например. зыДа пусть работает, я про заявление о строгой типизации базы Ты ж спросил про "конкретность базы", а теперь говоришь о другом - о типизации. Определись. Типизация априори должна быть в ORM, исходя даже из самого названия - объектный маппинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 15:39 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
кусок соственной проги со всеми приблудами кто нить покажет? или вы все работаете в цру? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 15:46 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
самый симпотный орм - kynetic ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 15:47 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
МСУзыТак язык - это желаемое или необходимое? Срорее, необходимое. зыПочему не может быть ORM только для конкретной базы? Отчего ж не может, может. L2S - для конкретного типа сервера (MSSQL), например. ок, тогда mybatis/ibatis, получается, тоже не ORM? Там нет собственного языка, транслируемого в XXX. Ну и наверное ещё каких-то свистелок, которые ты называешь необходимыми. Просто ты явно не ответил. МСУзыДа пусть работает, я про заявление о строгой типизации базы Ты ж спросил про "конкретность базы", а теперь говоришь о другом - о типизации. Определись. да что ты, я не спрашивал про "конкретность базы". Я вообще адресовал свой вопрос Lelouch , к тебе у меня были другие. Не люблю смешивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 16:43 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыок, тогда mybatis/ibatis, получается, тоже не ORM? Там нет собственного языка, транслируемого в XXX. Ну и наверное ещё каких-то свистелок, которые ты называешь необходимыми. Просто ты явно не ответил. Согласен, что "неявно" ответил. И не отвечу, потому что нет однозначного определения ORM. Каждый продукт сам себя позиционирует. Хибер позиционирует себя как ORM. Telerik OpenAccess позиционирует себя как ORM. BLToolkit позиционирует себя как ORM. EF позиционирует себя как ORM. ... Enterprise Library Data Access Block позиционирует себя как практику (хелпер, другими словами). зыда что ты, я не спрашивал про "конкретность базы". Я вообще адресовал свой вопрос Lelouch , к тебе у меня были другие. Не люблю смешивать. Ок, тогда сорри. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 16:53 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зы, по поводу JdbcTemplate: Доступ к данным в Spring ...Существует много статей о том, как делать инъекцию зависимости в Spring, но очень мало толковой информации о подключениях к базам данных. В Spring это можно делать либо напрямую при помощи JDBC либо использовать ORM технологии, например, Hibernate . Согласись, очевиден четкий контраст: либо горбатый, либо не горбатый. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 16:58 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыLelouchЗачем мне динамическая типизация если база строго типизирована? Немного вброшу - а если база NoSQL? А то тут все в порыве спора немного на скуль сервере зациклились :) Раз уж именно мне, то : 1) Тема топика SQL vs ORM. ))) 2) Честно, не сталкивался с нетипизированными хранилищами 3) noSQL бывает типизированным (это ответили до меня) 4) Даже при отсутсвтии строгой типизации в бд использую ORM и получу строгую типизацию. Подход без строгой типизации (нетипизированный датасет) все равно особых плюсов не имеет - при работе или придется приводить типы, или использовать dynamic, что сильно мешает и может привести к краху в рантайме при попытке использования несуществующего метода / поля / свойства, etc. Или я не правильно понял вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 17:11 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
P.S. Из примеров по MongoDB, приводимых Вами: Код: c# 1. 2. 3. 4.
Как видите, все равно преобразования типа необходимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 17:21 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
* Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 17:22 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
ViPRosкусок соственной проги со всеми приблудами кто нить покажет? или вы все работаете в цру? Вот вам, маленький запросик которых в приложении сотни. Конечно вы его протестировали в студии, посмотрели план, и так каждый раз после любого изменения. Эффективно.. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 17:31 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
LelouchP.S. Из примеров по MongoDB, приводимых Вами: Как видите, все равно преобразования типа необходимо. преобразование необходимо исключительно для работы с данными в строго типизированном языке C#. Если клиентом будет javascript, то преобразование уже не нужно ;) Да и если в одной строке может лежать документ с полем "foo" и значением типа string, а в другой - документ с полем "foo" и значением типа number, то это и называется отсутствие строгой типизации в базе. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 17:53 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
МСУ, я все к тому спрашивал, чтобы вляпаться с тобой в очередную игру слов про ORM или не ORM. Если называть инструмент ORM'ом, если у него есть базовый функционал маппинга сырых данных из базы на какую-то модель данных, то да, без ORM сейчас почти никто не обходится и для игнорирования нужны веские причины. Хотя вот в небольшом проекте с NoSQL (для Lelouch заодно) вместо ORM был простой валидатор по динамической схеме данных. Потому что были динамические формы и никакой объектной модели (кроме списка пользователей), и нужно было всего-лишь сохранить форму как документ, и уметь смапить документ обратно на форму для редактирования. Если настаивать на понятии ORM как на обязательном присутствии свистелок и переделок, то примеров, почему не нужно использовать такой тяжелый инструмент как ORM, уже может быть много. Либо нужен баланс. Для простых модулей типа user management нет смысла изобретать очередной CRUD велосипед, а уже там, где преимущественно нужны быстрые, разнообразные и эффективные выборки с отображением данных, ORM избыточен. Особенно хибернейт. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 17:54 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
"чтобы НЕ вляпаться" конечно же ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 17:55 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
ПарамонВот вам, маленький запросик которых в приложении сотни. Конечно вы его протестировали в студии, посмотрели план, и так каждый раз после любого изменения. Эффективно.. :) почему любители compile-time проверок все время любят приводить в пример опечатки в строках? А если я опечатался и написал >= , или вместо нуля единицу? А сколько в адовом 11867369 запросе можно опечаток наделать — я вообще молчу. У тебя же все равно будут юниттесты, правильно? :) они и свалятся в случае ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 18:09 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыМСУ, я все к тому спрашивал, чтобы не вляпаться с тобой в очередную игру слов про ORM или не ORM. Я это почувствовал изначально, поэтому старался "неявно" отвечать. Но когда вопрос стал ребром "горбатый или не горбатый" - я отписался про "самопроизвольную" трактовку вендора. Но, так или иначе, мы привыкли к тому, что в ORM'ах есть 1. Готовые для работы классы (либо пишем руками, либо кодогенерируем с хранилища) 2. Язык общения с хранилищем (транслятор в SQL) 3. По возможности поддержка различных видов БД (нетрудно реализовать из п.2) 4. По возможности поддержка возможности создания новой БД из набора классов (в хибере делается одной строчкой SchemaExport.Execute()) зыЕсли называть инструмент ORM'ом, если у него есть базовый функционал маппинга сырых данных из базы на какую-то модель данных Маппинг - это самое последнее и самое простое. Нужна схема, прежде всего. Нужны классы. Нужен движок-транслятор. Вот, что самое сложное. [quot зы]такой тяжелый инструмент как ORM В том-то и соль, что он не тяжелый. Он шустр и понятен, как березовый лист. Запросы выполняются там же на сервере, программист же общается с типизированными данными. Скорость та же. Микросекунды на маппинг объектов в коллекции не в счет. Тот же датасет дольше будет заполняться, чем наполнится коллекция того же хибера или EF. Самое шустрое же - это IDataReader, но работать с ним так или иначе невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 18:09 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыпочему любители compile-time проверок все время любят приводить в пример опечатки в строках? А если я опечатался и написал >= , или вместо нуля единицу? Потому, что данный вид ошибки является самым распространенным. А от логической ошибки же (ошибки в бизнес-логике) ничего не спасёт, даже серебряная пуля. зыУ тебя же все равно будут юниттесты, правильно? :) они и свалятся в случае ошибки. Точно так же, можно ошибиться в юнит-тесте и написать 0 вместо 1. Так что мы ходим рекурсивно по кругу. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 18:12 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
МСУ Точно так же, можно ошибиться в юнит-тесте и написать 0 вместо 1. Так что мы ходим рекурсивно по кругу. да, и тестеры тоже ошибаются, и так всегда и вываливаются ошибки на продакшн, это реальность но все-таки давай рассматривать юнит-тесты как достаточный уровень защиты от подобных ошибок. МСУМаппинг - это самое последнее и самое простое. Нужна схема, прежде всего. Нужны классы. Нужен движок-транслятор. Вот, что самое сложное. маппинг - это результат работы всего, что ты написал выше. Именно что последнее, и базовое :) Транслятор->база->схема->маппинг. Тут именно что ничего тяжелого. Тяжелое и непредсказуемое начинается когда подключают, например, хибернейт. Если он избыточен для задачи, то достаточно jdbctemplate/mybatis для получения результата в виде POJO, с которым уже можно работать дальше используя парадигмы объектов. В основном это некая небольшая простая постобработка на стороне приложения перед выводом на клиент. Тут нет серебряной пули, так что спор — нужен ORM или нет без конкретной задачи сводится к простому мерянью пиписьками вида "а у меня проект больше и без ORM мы бы его делали в 10 раз дольше". ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 18:25 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыно все-таки давай рассматривать юнит-тесты как достаточный уровень защиты от подобных ошибок. Ок. Но зачем доводить до последнего рубежа обороны, если можно на начальном этапе отсеять такую ошибку (ошибки именований или типов). Далее - продуктивность и удобство работы (интелиссенс). Влияет ли на скорость и качество разработки? Или в помойное ведро его, этот подсказыватель? Думаю, тут всё очевидно. зымаппинг - это результат работы всего, что ты написал выше. Именно что последнее, и базовое :) Это результат, окончательный расчёт. Но, чтобы его сделать, нужно иметь полноценный движок, вот в нем вся и трудность. [quot зы]Тяжелое и непредсказуемое начинается когда подключают, например, хибернейт. Если он избыточен для задачи, то достаточно jdbctemplate/mybatis для получения результата в виде POJO, с которым уже можно работать дальше используя парадигмы объектов.[/quot Не понимаю, всё же. В чём тяжелость и избыточность хибера? Нужно переключиться на другую БД (например, Oracle) - переключаем провайдер в конфиге. Нужно развернуть базу по схеме в инсталляторе - вызываем метод, который по схеме все сделает. Но так или иначе, самое ценное в ORM - это типизация хранилища, как следствие родной человеческий интелиссенс, с которым одно удовольствие работать. Рутинные же SELECT FROM WHERE в прошлом. зыТут нет серебряной пули, так что спор — нужен ORM или нет без конкретной задачи сводится к простому мерянью пиписьками вида "а у меня проект больше и без ORM мы бы его делали в 10 раз дольше". Нужен. Тысячу раз нужен, зы. Однозначно нужен, даже если база постоянна и прочие фантики не интересны. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 18:39 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
LelouchP.S. Из примеров по MongoDB, приводимых Вами: Код: c# 1. 2. 3. 4.
Как видите, все равно преобразования типа необходимо. ну конечно. вы бы еще работу с чистым rest показали. использовать готовую библиотеку для доступа к MongoDB с поддержкой типов слабо? хотя бы вот так http://habrahabr.ru/blogs/aspnet_mvc/93598/ ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 18:58 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
К МСУ добавить нечего, разве что - носить стринги не наша ориентация ) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 19:03 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
зыДля простых модулей типа user management нет смысла изобретать очередной CRUD велосипед, а уже там, где преимущественно нужны быстрые, разнообразные и эффективные выборки с отображением данных, ORM избыточен. Особенно хибернейт. ORM не исключает быстрых и эффективных выборок. его основная задача - маппинг. с этой задачей он отлично справляется. это на порядок удобнее нежели работать с классическим ADO.NET. он снимает кучу рутинной работы. но и логику на нем строить так же можно, и нужно, если есть необходимость. для примера. была необходимость отображать все записи из определенных таблиц. через время появилось требование записи не удалять физически, а маркировать как Deleted. используя ORM, я пропишу это условие в одном месте и все запросы будут работать правильно. в вашем случае вы будете тупым поиском пересматривать все текстовые запросы и хранимые процедуры. а если добавится еще условие? будете лазить еще и еще. при этом нет никакого контроля, что вы не сломали нигде ничего. ведь тестами это покрыть вы не можете. используя ORM, я могу наследовать логику, а значит и запросы к базе. в вашем случае, вам придется использовать динамический SQL, который привнесет дополнительный ад в проект. использовать чистый сиквел имеет смысл только тогда, когда нужно обрабатывать огромные объемы данных. обычно это OLAP. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 19:06 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
EnomayLelouchP.S. Из примеров по MongoDB, приводимых Вами: Код: c# 1. 2. 3. 4.
Как видите, все равно преобразования типа необходимо. ну конечно. вы бы еще работу с чистым rest показали. использовать готовую библиотеку для доступа к MongoDB с поддержкой типов слабо? хотя бы вот так http://habrahabr.ru/blogs/aspnet_mvc/93598/ А к чему ваш комментарий, можно вопрос? Может сначала перечитаете вопрос, на который я отвечал? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 19:07 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
МСУ Но так или иначе, самое ценное в ORM - это типизация хранилища, как следствие родной человеческий интелиссенс, с которым одно удовольствие работать. Рутинные же SELECT FROM WHERE в прошлом. на самом деле самое ценное в ORM - это возможность работать с объектами, а не строками в таблицах. это существенно при использовании ООП. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 19:10 |
|
ORM vs sql
|
|||
---|---|---|---|
#18+
LelouchА к чему ваш комментарий, можно вопрос? Может сначала перечитаете вопрос, на который я отвечал? вы написали что необходимо преобразование. преобразование чего во что? конечно в том или ином виде оно всегда и везде есть. я уверен что даже внутри сиквела. но используя нормальные ORM, у вас не возникает необходимость делать это самому. и к тому же отпадает необходимость в том коде, что вы привели как пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2012, 19:11 |
|
|
start [/forum/topic.php?fid=17&msg=37605809&tid=1350478]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 316ms |
total: | 483ms |
0 / 0 |