powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ORM vs sql
25 сообщений из 451, страница 11 из 19
ORM vs sql
    #37605813
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EnomayLelouchА к чему ваш комментарий, можно вопрос? Может сначала перечитаете вопрос, на который я отвечал?

вы написали что необходимо преобразование. преобразование чего во что?
конечно в том или ином виде оно всегда и везде есть. я уверен что даже внутри сиквела. но используя нормальные ORM, у вас не возникает необходимость делать это самому. и к тому же отпадает необходимость в том коде, что вы привели как пример.

Еще раз посмотрите на что я отвечал... Вопрос ОРМ не касался.)
...
Рейтинг: 0 / 0
ORM vs sql
    #37605915
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНе понимаю, всё же. В чём тяжелость и избыточность хибера? Нужно переключиться на другую БД (например, Oracle) - переключаем провайдер в конфиге. Нужно развернуть базу по схеме в инсталляторе - вызываем метод, который по схеме все сделает.

большинство проектов, о которых я знаю, либо никогда не меняли базу, либо делали это исключительно ради оптимизации (например, переход с sql на nosql). Нельзя тупо поменять базу, ничего не поменять в коде и получить +500% в скорости. Так что ИМХО смена базы — проблема и, соответственно, выгода, сильно надуманы. Да, ты сейчас скажешь что ORM позволит оставить бОльшую часть кода как есть, но тот же переход sql->nosql требует заодно и смены подхода к работе с данными. А количество кода, которое необходимо будет переписать, зависит не от факта использования ORM, а от наличия первоначальной абстракции DAL и BL.

В хибере очень много всего, что нужно настроить, чтобы заработало. Более высокий порог вхождения. А если внезапно начнет глючить в неумелых руках, то ошибки можно искать долго и упорно. Особенно коварны транзакции и кэш. В некоторых случаях кэш вообще нафиг не нужен, а он есть. А если несколько серверов — появляется ещё и проблема репликации кэша. Я не говорю что это отмазки ламеров чтобы не использовать. Пожалуйста, если это все нужно и умеешь работать. Но если нет — то хибер крайне избыточен и потери CPU внутри на все перделки при большой нагрузке становятся сильно заметны.

Например, мне нужно делать выборки актуальных данных по вроде бы простым динамическим критериям. Нужно делать очень быстро, много и на большом объеме данных. Хибер не в состоянии это закэшировать, просто нет таких алгоритмов. Он хорошо справляется с поиском по ключу, но сложнее — проходит мимо. Лучше взять инструмент проще и эффективнее, например mybatis, и получить то, что мне нужно, сразу и без танцев.


МСУНо так или иначе, самое ценное в ORM - это типизация хранилища, как следствие родной человеческий интелиссенс, с которым одно удовольствие работать. Рутинные же SELECT FROM WHERE в прошлом.

Ну ты уж определись, тебе чтобы код быстрее писать, или чтобы написанный код быстрее работал. Иногда приходится чем-то жертвовать.
Селекты бывают рутинные только если ты работаешь с таблицами данных по типу простых CRUD по ключу, и это не обязательно должно работать сверхбыстро. Тут да, я уже писал, ORM пожалуйста. Ну а в остальных случаях те же селекты, фром, вэрэ, куда ж без них :) но уже в других ракурсах.
...
Рейтинг: 0 / 0
ORM vs sql
    #37605918
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Enomayиспользуя ORM, я пропишу это условие в одном месте и все запросы будут работать правильно. в вашем случае вы будете тупым поиском пересматривать все текстовые запросы и хранимые процедуры. а если добавится еще условие? будете лазить еще и еще. при этом нет никакого контроля, что вы не сломали нигде ничего. ведь тестами это покрыть вы не можете.


Я не очень понимаю, как ты представляешь себе архитектуру приложения с ORM и без? Почему, если нет ORM, то обязательно все будет раскидано по разным частям кода? Ну вот просто как-то не понимаю :)
Enomayиспользуя ORM, я могу наследовать логику, а значит и запросы к базе. в вашем случае, вам придется использовать динамический SQL, который привнесет дополнительный ад в проект.

а с ORM, если нужно делать выборки по динамическим критериям, не нужно будет писать динамический запрос на одном из этих самых языков запросов? sql-подобный как в хибернейте или какие-нибудь конструкторы критериев? это не как АД выглядит? :) что за предрассудки?
...
Рейтинг: 0 / 0
ORM vs sql
    #37605919
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонViPRosкусок соственной проги со всеми приблудами кто нить покажет?
или вы все работаете в цру?

Вот вам, маленький запросик которых в приложении сотни.
Конечно вы его протестировали в студии, посмотрели план, и так каждый раз после любого изменения.
Эффективно.. :)
Парамоша, в ВИПРОС вся эта фигня генерируется и кешируется
при изменении чего нить кеш проверяется на валидность и приводится в нужный вид если возможно или метится как говно
(это по части СКЛ запросов = виртуальные типы)
потом проверяются методы использующие данный тип и т.д.

а воще все делатеся наоборот - из метаданных генерируются БД и запросы(виртуальные типы - вью)
...
Рейтинг: 0 / 0
ORM vs sql
    #37605936
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зыEnomayиспользуя ORM, я пропишу это условие в одном месте и все запросы будут работать правильно. в вашем случае вы будете тупым поиском пересматривать все текстовые запросы и хранимые процедуры. а если добавится еще условие? будете лазить еще и еще. при этом нет никакого контроля, что вы не сломали нигде ничего. ведь тестами это покрыть вы не можете.


Я не очень понимаю, как ты представляешь себе архитектуру приложения с ORM и без? Почему, если нет ORM, то обязательно все будет раскидано по разным частям кода? Ну вот просто как-то не понимаю :)
Enomayиспользуя ORM, я могу наследовать логику, а значит и запросы к базе. в вашем случае, вам придется использовать динамический SQL, который привнесет дополнительный ад в проект.

а с ORM, если нужно делать выборки по динамическим критериям, не нужно будет писать динамический запрос на одном из этих самых языков запросов? sql-подобный как в хибернейте или какие-нибудь конструкторы критериев? это не как АД выглядит? :) что за предрассудки?

Если под динамическими критериями подразумевается то что запрос меняется в зависимости от условий то на LINQ это спокойно пишется без SQL, Entitu SQL , etc.
...
Рейтинг: 0 / 0
ORM vs sql
    #37605939
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchЕсли под динамическими критериями подразумевается то что запрос меняется в зависимости от условий то на LINQ это спокойно пишется без SQL, Entitu SQL , etc.
да спасибо что глаза открыл, я этого и не отрицал. Я говорил что выглядит это по сути так же как составление динамического запроса на sql. Так что аргумент Enomay про какие-то там сложности мне не очень понятен.
...
Рейтинг: 0 / 0
ORM vs sql
    #37605941
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зыLelouchЕсли под динамическими критериями подразумевается то что запрос меняется в зависимости от условий то на LINQ это спокойно пишется без SQL, Entitu SQL , etc.
да спасибо что глаза открыл, я этого и не отрицал. Я говорил что выглядит это по сути так же как составление динамического запроса на sql. Так что аргумент Enomay про какие-то там сложности мне не очень понятен.

Нет, это выглядит совершенно по другому.)
...
Рейтинг: 0 / 0
ORM vs sql
    #37605942
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати напиши мне без стороннего кода условие where с поиском по названию поля, переданному как аргумент, на linq
да ладно, можешь не писать, суть надеюсь понял. Задача стара как боян и существует с момента появления самого linq, и вроде как самой библиотекой она так и осталась нерешенной.
...
Рейтинг: 0 / 0
ORM vs sql
    #37605947
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зыкстати напиши мне без стороннего кода условие where с поиском по названию поля, переданному как аргумент, на linq
да ладно, можешь не писать, суть надеюсь понял. Задача стара как боян и существует с момента появления самого linq, и вроде как самой библиотекой она так и осталась нерешенной.

Тупой вариант switch-case по названию полей не рассматривать?
...
Рейтинг: 0 / 0
ORM vs sql
    #37605954
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фуфуфу. конечно нет
...
Рейтинг: 0 / 0
ORM vs sql
    #37605957
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зыВ хибере очень много всего, что нужно можно настроить, чтобы заработало
Имхо, так правильней. Лейтмотивом версии 3.2 можно считать "Меньше настроек, больше дела."


зыНапример, мне нужно делать выборки актуальных данных по вроде бы простым динамическим критериям. Нужно делать очень быстро, много и на большом объеме данных. Хибер не в состоянии это закэшировать, просто нет таких алгоритмов. Он хорошо справляется с поиском по ключу, но сложнее — проходит мимо. Лучше взять инструмент проще и эффективнее, например mybatis, и получить то, что мне нужно, сразу и без танцев.
Вы часом не OLAP на хибер пытались навесить? Может быть пример очень быстро, много и на большом объеме данных приведёте? А то похоже на ситуацию "выбери любых два пункта"
Да и проекции в хибере никто не отменял, и выполняются они намного быстрее работы с сущностями.
...
Рейтинг: 0 / 0
ORM vs sql
    #37605960
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchНет, это выглядит совершенно по другому.)
а что другого-то? ты правде в глаза погляди, решение проблемы на большинстве предлагаемых инструментов выглядит одинаково +- пара букв.

http://www.mybatis.org/core/statement-builders.html
и хреначь в свое удовольствие.
...
Рейтинг: 0 / 0
ORM vs sql
    #37605968
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorВы часом не OLAP на хибер пытались навесить? Может быть пример очень быстро, много и на большом объеме данных приведёте? А то похоже на ситуацию "выбери любых два пункта"
Да и проекции в хибере никто не отменял, и выполняются они намного быстрее работы с сущностями.
нет, упаси меня от olap и кубов. Какой конкретный пример? Любой публичный сервис, задача которого — обрабатывать выборки хотя-бы со скоростью пару десятков тысяч запросов в секунду по базе размером, ну пусть от 50гигабайт, уже лучше давно пора начать избавлять от хибернейта и прочих монстров. Хотел привести социальную сеть, но неразумно — там можно много и яростно кэшировать и актуальность там не критична. Пусть будет какой-нибудь сервис для совместной работы людей над XXX в реальном времени. Выборки включают фильтрацию по правам, коллекциям и атрибутам XXX для отображения данных конкретному пользователю.
...
Рейтинг: 0 / 0
ORM vs sql
    #37605969
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зыLelouchНет, это выглядит совершенно по другому.)
а что другого-то? ты правде в глаза погляди, решение проблемы на большинстве предлагаемых инструментов выглядит одинаково +- пара букв.

http://www.mybatis.org/core/statement-builders.html
и хреначь в свое удовольствие.

А если я в этом инструменте сначала вызову метод Where а потом Join? он переместит строку Join выше условия?
Код: java
1.
2.
3.
4.
5.
6.
BEGIN(); // Clears ThreadLocal variable
  SELECT("P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME");
  FROM("PERSON P");
  if (p.id != null) {
  WHERE("P.ID like #{id}");
  }


Linq:
Код: c#
1.
2.
3.
4.
5.
6.
 var query = from i in context.Person
                        select i;
            if (p.Id != null)
            {
                query = query.Where(i => i.Id == id);
            }


Прям одно и тоже, особенно с типизацией и возможностью обработки noSQL (для EF достаточно найти провайдера. а для этой библиотеки что?)
...
Рейтинг: 0 / 0
ORM vs sql
    #37605972
Enomay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зыЯ не очень понимаю, как ты представляешь себе архитектуру приложения с ORM и без? Почему, если нет ORM, то обязательно все будет раскидано по разным частям кода? Ну вот просто как-то не понимаю :)


Обычно если человек использует ORM, то как правило вся логика работы с данным сконцентрирована в одном слое - DAL.
Та же ситуация может быть и при использовании SQL запросов, прописанных в коде.
Другое дело когда мы начинаем примазывать тут использование хранмых процедур. Тут уже отследить где какая выборка, становится сложнее. Хранимые могут вызываться другими хранимыми и так далее. Проблема в том, что DAL слой с ORM при поддержке современных IDE очень легко поддерживать, рефакторить.

зыа с ORM, если нужно делать выборки по динамическим критериям, не нужно будет писать динамический запрос на одном из этих самых языков запросов? sql-подобный как в хибернейте или какие-нибудь конструкторы критериев? это не как АД выглядит? :) что за предрассудки?

опять же, это будет тестируемо и как минимум будет содержать значительно меньше синтаксических ошибок, в силу строгой типизации.
...
Рейтинг: 0 / 0
ORM vs sql
    #37605977
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch,

даже не близко
...
Рейтинг: 0 / 0
ORM vs sql
    #37605979
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ на ваш вопрос про поле по названию:

Код: c#
1.
2.
List<Table1> users = context.Table1Set.Where("it.Name LIKE @usernameToMatch",
                    new ObjectParameter("usernameToMatch", "1")).OrderBy(u => u.Name).ToList();
...
Рейтинг: 0 / 0
ORM vs sql
    #37605980
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosLelouch,

даже не близко

Браво, правда это был сарказм.
...
Рейтинг: 0 / 0
ORM vs sql
    #37605982
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosLelouch,

даже не близко

Если вы насчет оператора like то мне просто было не интересно искать его реализацию кроме показанной выше на 2 поста)
...
Рейтинг: 0 / 0
ORM vs sql
    #37605983
Enomay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зыфуфуфу. конечно нет

IQueriable творит чудеса. в купе с extension и спецификациями.
...
Рейтинг: 0 / 0
ORM vs sql
    #37605985
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchViPRosLelouch,

даже не близко

Браво, правда это был сарказм.
да какой нафиг сарказм
хардкод детектед
...
Рейтинг: 0 / 0
ORM vs sql
    #37605986
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchОтвет на ваш вопрос про поле по названию:

Код: c#
1.
2.
List<Table1> users = context.Table1Set.Where("it.Name LIKE @usernameToMatch",
                    new ObjectParameter("usernameToMatch", "1")).OrderBy(u => u.Name).ToList();


а вот это уже недалко от датасет :):)
можно и покруче
...
Рейтинг: 0 / 0
ORM vs sql
    #37605988
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosLelouchпропущено...


Браво, правда это был сарказм.
да какой нафиг сарказм
хардкод детектед
То есть это:

Код: java
1.
2.
3.
4.
5.
6.
BEGIN(); // Clears ThreadLocal variable
  SELECT("P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME");
  FROM("PERSON P");
  if (p.id != null) {
  WHERE("P.ID like #{id}");
  }


не хардкод, а это:
Код: c#
1.
2.
3.
4.
5.
6.
var query = from i in context.Person
                        select i;
            if (p.Id != null)
            {
                query = query.Where(i => i.Id == id);
            }


хардкод?)
P.S. Отвечали не Вам)
P.P.S. Идите Generic'и пробуйте, потом напишите эссе о их ужасной производительности) Я прочту) Честно :)
...
Рейтинг: 0 / 0
ORM vs sql
    #37605990
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchА если я в этом инструменте сначала вызову метод Where а потом Join? он переместит строку Join выше условия?

а если я с головой не дружу, компьютер мне поможет? :) в linq ты не можешь случайно переставлять все подряд местами, иначе получится что из базы выходит все, а фильтрует приложение.
LelouchПрям одно и тоже, особенно с типизацией и возможностью обработки noSQL (для EF достаточно найти провайдера. а для этой библиотеки что?)
Я уже писал выше свое отношение к смене сервера, нужно следить за дискуссией. Так что если нужен nosql, я буду сразу на нем писать. Кстати mybatis поддерживает только sql, впрочем как и linq to sql.
...
Рейтинг: 0 / 0
ORM vs sql
    #37605991
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosLelouchОтвет на ваш вопрос про поле по названию:

Код: c#
1.
2.
List<Table1> users = context.Table1Set.Where("it.Name LIKE @usernameToMatch",
                    new ObjectParameter("usernameToMatch", "1")).OrderBy(u => u.Name).ToList();


а вот это уже недалко от датасет :):)
можно и покруче

До датасета как до луны) Точнее датасету до этого)))
...
Рейтинг: 0 / 0
25 сообщений из 451, страница 11 из 19
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ORM vs sql
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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