Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 9 10 11 12 13 14 15 16 [17] 18   вперед  Ctrl
 Re: Нужен ли нам ORM?  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5687
mad_nazgul
asv79
Помимо тех приключений, которые будут просто при миграции с Oracle на PostgreSQL.

ерунду ты пишешь полную .Хибер нужно для начала изучить,а если ваши познания заканичиваюся CRUD операциями - то причем тут Hibernate


Зачем?!
Мне знания SQL вполне достаточно для работы с БД. ;-)

Сообщение было отредактировано: 1 май 21, 13:02
1 май 21, 12:09    [22317182]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
fixxer
Member

Откуда:
Сообщений: 834
Stanislav Bashkyrtsev
И у меня вполне конкретный вопрос: как об изменениях внутри Entities (а они обязательно будут) узнает Repository?

Я вроде отвечал, но скажу еще раз прямо - никак. Все изменения репозиторий должен явно и непротиворечиво узнавать из агрегата в методе save.

Stanislav Bashkyrtsev

Я вот счас пролистал Еванса и не нашел там упоминаний Доменных Событий. Что ты под этим подразумеваешь? Как это выглядит?

У Эванса событий нет, он про них писал уже после выхода книги. Посмотри у Вернона.
1 май 21, 12:17    [22317184]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
fixxer
Stanislav Bashkyrtsev
И у меня вполне конкретный вопрос: как об изменениях внутри Entities (а они обязательно будут) узнает Repository?

Я вроде отвечал, но скажу еще раз прямо - никак. Все изменения репозиторий должен явно и непротиворечиво узнавать из агрегата в методе save.
Ок, просто из твоих слов я понял что это не проблема:
fixxer
Ну вот также и решать. Руками. Проектируя репозитории с явным методом save, который вызываете в Application Service после вызова бизнес-метода на агрегате. И не нужно логику в сервис выносить.
Но на самом деле это как раз самая проблемная часть. Ведь Repository не может никак узнать что изменилось внутри сущности. Т.е. либо это dirty check (привет Hibernate), либо сущности явно должны записывать что в них менялось, еще и предоставить к этим данным доступ.

Сообщение было отредактировано: 1 май 21, 13:32
1 май 21, 13:37    [22317210]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
fixxer
Member

Откуда:
Сообщений: 834
Stanislav Bashkyrtsev
fixxer
пропущено...
Я вроде отвечал, но скажу еще раз прямо - никак. Все изменения репозиторий должен явно и непротиворечиво узнавать из агрегата в методе save.

Ок, просто из твоих слов я понял что это не проблема


Действительно не проблема. Сущности только иммутабельны должны быть. А так как они иммутабельны, то никакой проблемы дать к ним доступ репозиторию нет. Замечу, что это не делает модель Anemic, и никакая логика при этом не обязана уйти в Transaction Script. Или другой вариант, явно регистрировать в репозитории сущность, которую меняем. Как было cделано в TopLink, где был явный вызов unitOfWork.registerObject.
1 май 21, 14:50    [22317224]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
Это все какие-то общие фразы. Ты пробовал это делать? Или это теория? Если пробовал, то можешь описать алгоритм по шагам: что передавалось в Repository и как он вычислял каким записать делать UPDATE, DELETE, INSERT?

Сообщение было отредактировано: 1 май 21, 16:26
1 май 21, 16:35    [22317256]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18692
вот вы со своими сущностями себе все мозги запудрили себе мозги - чтоб изменить одно поле - вам нужен весь объект ,т.е. все поля. я ещё могу согласиться когда десктопное приложение, но когда вэб, зачем держать все объекты на сервере в памяти? если в браузере что-то вычислили/изменили - зачем это править в объектах на сервере? можно сразу зафиксировать это в базе.

и начните строить решение не с объектов , а со структуры данных, их связями. постройте схему из таблиц. будет более наглядно и понятно.
1 май 21, 19:22    [22317281]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
fixxer
Member

Откуда:
Сообщений: 834
Stanislav Bashkyrtsev
Это все какие-то общие фразы. Ты пробовал это делать? Или это теория? Если пробовал, то можешь описать алгоритм по шагам: что передавалось в Repository и как он вычислял каким записать делать UPDATE, DELETE, INSERT?


Ну конечно. Каждый день так делаю) Ты все хочешь какую-то магию услышать, нет там магии. Есть маппинг полей сущности на таблицу, через MyBatis, jooq или спринг, и руками тоже можно написать. Лично я пишу на scala и использую slick.
1 май 21, 20:17    [22317294]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
fixxer
Member

Откуда:
Сообщений: 834
вадя
зачем держать все объекты на сервере в памяти?


Безотносительно твоего подхода DB-first - это религиозное, а у нас свобода вероисповедания. Но, справедливости ради, никто не держит в памяти все объекты. Ты про сборку мусора слышал? Отработали запрос и все что насоздавали - в утиль. Если уложились в молодом поколении, то очень дешево. И как работают ссылки читал? Строка, которая в результате попала в preparedStatement.setString это плюс-минус та же строка, что создалась при парсинге параметров реквеста, через сколько бы оберток ее не протащили.
1 май 21, 20:39    [22317298]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
fixxer
вадя
зачем держать все объекты на сервере в памяти?


Безотносительно твоего подхода DB-first - это религиозное, а у нас свобода вероисповедания. Но, справедливости ради, никто не держит в памяти все объекты. Ты про сборку мусора слышал? Отработали запрос и все что насоздавали - в утиль. Если уложились в молодом поколении, то очень дешево. И как работают ссылки читал? Строка, которая в результате попала в preparedStatement.setString это плюс-минус та же строка, что создалась при парсинге параметров реквеста, через сколько бы оберток ее не протащили.

Я просто немного хотел бы расширить тезис. Зачем создавать объект если тебе нужен просто UPDATE баланса по номеру
счета клиента. Идеологи ООП-ОРМ требуют чтобы это действие было сделано через создание объекта. Но инженер и хозяйственник
говорит что можно тут и ... не создавать объект. Да и это близко к бритве Оккама. Тоесть уже на этом шаге
мы вступаем в торг где с одной стороны - идеология а с другой стороны инженерно-хозяйственный подход.
1 май 21, 21:56    [22317311]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
забыл ник
Member

Откуда:
Сообщений: 3471
mayton

мы вступаем в торг где с одной стороны - идеология

А зачем вообще нужна эта сторона? Что она дает? По жизни мало чтоли идеологов? Для меня вообще звучит как дичь. давайте чтоли молиться богам ООП перед коммитом, или как?
Хотя ты верно подметил - ООП это не про инженеров, это про идеологию. Поэтому ему давно место на свалке
1 май 21, 22:44    [22317318]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Я не виноват. Тема топика такая.

А ООП приятен мозгу как старая заезжаная песенка. Вот слышишь ее - и сразу впрыск в мозг эндорфина.
Об этом еще проф. Савельев говорил. Узнаваемое - всегда приятно мозгу.
1 май 21, 23:01    [22317323]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18692
mayton
Зачем создавать объект если тебе нужен просто UPDATE баланса по номеру
счета клиента. Идеологи ООП-ОРМ требуют чтобы это действие было сделано через создание объекта. Но инженер и хозяйственник
говорит что можно тут и ... не создавать объект. Да и это близко к бритве Оккама. Тоесть уже на этом шаге
мы вступаем в торг где с одной стороны - идеология а с другой стороны инженерно-хозяйственный подход.
на этом можно прекращать спор....
2 май 21, 01:03    [22317348]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18692
.

Сообщение было отредактировано: 2 май 21, 01:02
2 май 21, 01:10    [22317349]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
gmugar
Member

Откуда:
Сообщений: 23
ООП не очень совместимо с реляционными бд. Мягко говоря.
FYI: Object–relational impedance mismatch

На данный момент, приличная часть сообщества ( не только Егор Бугаенко :) ) считает ORM анти-паттерном.
Ну, например: https://seldo.com/posts/orm_is_an_antipattern

Короче, ORM - это всегда некий набор костылей. Просто в силу своей природы.

JOOQ

SQL was never meant to be abstracted.
To be confined in the narrow boundaries of heavy mappers, hiding the beauty and simplicity of relational data.
SQL was never meant to be object-oriented.
SQL was never meant to be anything other than... SQL!


Возникает вопрос: почему изначально спорная концепция получила столь широкое распространение и массу реализаций?

Такое случалось в нашей отрасли не мало раз и причина всегда одна: оно неплохо решало, некую конкретную, часто возникающую, практическую проблему.

Цитата из 2012 года https://softwareengineering.stackexchange.com/a/120338:
ORM is one of the most useful anti-patterns out there.
You will understand why only if you find yourself in a practical situation where you'll have to swap databases in a project.
Or even upgrade to another version of the same database.
ORM is one of those things, that you only fully understand when you actually need them.

Off course, as everything useful, ORM is highly prone to abuse.
If you think it somehow replaces the need to know everything about the database you work on, then it will come back and bite you. Hard.


Нет. ORM не избавляет вас от необходимости знать SQL и разбираться в базах.
Более того, придется еще разбиратьcя с кучей специфики.

Нет. ORM не является уникальным средством для упрощения работы с низкоуровневым JDBC.
Есть библиотеки которые решают эту задачу, по крайней мере, не хуже: Jdbi, JOOQ.

А вот когда надо одновременно поддерживать несколько разных диалектов SQL -> С ORM это сильно проще чем без ORM.
20 лет назад(Hibernate как раз 20 лет) это была очень актуальная проблема.

A вот сейчас - это куда менее актуально. Потому, что
1. продаем не софт, а сервис:
- не зачем поддерживать много разных баз
- есть конкретный финансовый смысл выжимать максимум из бд и ORM тут только мешает
2. OpenSource бд, очень сильно развились за эти годы и возможность поддерживать альтернативы все менее ценна.
3. Именились концепции: притаскивать 10 мегабайтный Hibernate в микросервис ради двух десятков запросов не выглядит целесообразным

Подводя итог. IMHO.
ORM - противоестественная концепция
на данный момент использование ORM редко, действительно, имеет смысл.
27 май 21, 11:38    [22327865]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Добавлю еще аргументацию к тезису что ORM способствует адаптации кода к любой DBMS.

Лет 15 назад у разработчика на предприятии не было возможности выбирать DBMS.
Просто ему диктовали. Например нефте-газовая отрасль - обычно IBM/db2. Банкинг и финансы - Oracle/MSSQL.
Пришел. Получил ТЗ. Взял под козырек.

А сегодня любой дурак (owner) в 2-мышко-клика поднимает в Ажурах или Амазонах любой стек. Цены - примерно одинаковые
при примерно одинаковых мощностях узлов и памяти. И сам по себе вопрос перехода на другую DBMS звучит как минимум странно.

Ну нет вообще необходимости менять DBMS. Это так-же странно как и поменять язык. Представте что вас-бы попросили
поменять Java на С#. Да вы послали бы по адресу и ушли бы в другой проект.

Тоесть сама по себе постановка смены DBMS у меня вызывает изумление и неприятие.

Не имею ничего против если у вас 2 разных DBMS было изначально - но тут вопрос архитектуры. Вы все равно не сможете
реализовать между ними полную консистентность. Соотв что ваша реализация что 2 микросервиса - будет на одном уровне
гарантий. А если 2 микросервиса - то зачем ORM?
27 май 21, 11:49    [22327872]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
gmugar,
>ORM - противоестественная концепция
= колесо ооочень противоестественно природе. Однако сколько лет работает для своих целей.
В этом есть гений человеческой мысли. Присобачить нечто противоестественное для решения задачи.
27 май 21, 11:53    [22327876]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
gmugar
Member

Откуда:
Сообщений: 23
mayton

Лет 15 назад у разработчика на предприятии не было возможности выбирать DBMS.
Просто ему диктовали. Например нефте-газовая отрасль - обычно IBM/db2. Банкинг и финансы - Oracle/MSSQL.
Пришел. Получил ТЗ. Взял под козырек.

А сегодня любой дурак (owner) в 2-мышко-клика поднимает в Ажурах или Амазонах любой стек. Цены - примерно одинаковые
при примерно одинаковых мощностях узлов и памяти. И сам по себе вопрос перехода на другую DBMS звучит как минимум странно.

ну как-то так, да

когда вы продаете софт, то вы сильно улучшаете шансы его продать, если этот софт легко ложится в существующюю инфраструктуру заказчика.

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

если ваш софт может в разные базы - это важное конкурентное преимущество. в этом сценарии. и 20 лет назад это была повсеместная история. client-server systems вот это вот все.

но те времена давно прошли

Когда это вам надо, то да, я бы использовал ORM. но за последние лет 10 я столкнулся с такой необходимостью... 1 раз.
27 май 21, 12:30    [22327896]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
gmugar,
Вы сравнили облачные решения и решения на бд.
Теплое с мягким и рядом сбоку ОРМ
27 май 21, 12:37    [22327898]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
PetroNotC Sharp
gmugar,
Вы сравнили облачные решения и решения на бд.
Теплое с мягким и рядом сбоку ОРМ

Разницы нет. Облаки - это теже самые датацентры - только побогаче.
27 май 21, 12:39    [22327901]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
mayton,
ОРМ для Рсубд.
А в облаке нет Рсубд.
Тогда глупо говорить что ОРМ не нужен.
Может БД не нужно?
27 май 21, 12:56    [22327922]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
mayton,

Подмена понятий
27 май 21, 12:56    [22327924]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
gmugar
Member

Откуда:
Сообщений: 23
Когда вы применяете какой то инструмент вы должны понимать зачем.
Не потому что "так делают все", и не потому что "я по другому не умею".

1. ORM избавляет вас от необходимоти знать и уметь в SQL? - Нет.
2. ORM упрощает работу с базой? не особо. и чем больше и сложнее проект, тем сомнительнее выигрыш. Именно для этой цели существуют лучшие альтернативы. выше я некоторые из них упоминал.
3. адаптации кода к любой DBMS? Да, а оно вам точно надо в проекте? это в любом случае не будет "бесплатно".

При этом, само по себе, применение ORM имеет цену.
JPA - не маленькая по размеру спецификация(и к слову с неоднозначностями, что особо доставляет). куча аспектов, куча специфики у каждого, провайдера. это надо уметь, иначе ваяют такое... видел много раз.
вы заплатите потерями в производительности и ресурсах
вы заплатите каким то странным вспомогательным кодом вроде Entity классов (который еще и тестами надо покрывать потому что этот ваш код)
27 май 21, 13:33    [22327941]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
mrWolf
Member

Откуда: Тридевятое царство
Сообщений: 83
mayton
Ну нет вообще необходимости менять DBMS. Это так-же странно как и поменять язык.
Бывают иногда в жизни и такие огорчения.
Случилось у нас тут не так уж давно "импортозамещение", и да, пришлось менять Oracle на PstgreSQL
27 май 21, 13:38    [22327947]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
PetroNotC Sharp
mayton,
ОРМ для Рсубд.
А в облаке нет Рсубд.

Кто тебе такую ерунду сказал? Ты возможно путаешь понятия cloud-* и cloud-storages?
27 май 21, 14:13    [22327984]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли нам ORM?  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
mrWolf
mayton
Ну нет вообще необходимости менять DBMS. Это так-же странно как и поменять язык.
Бывают иногда в жизни и такие огорчения.
Случилось у нас тут не так уж давно "импортозамещение", и да, пришлось менять Oracle на PstgreSQL

И ORM вам все равно не поможет. Сильная сторона Оракла - это хранимые процедуры. И SQL-hints.
А они не поддерживаются ORM. Все равно миграция на PG - будет архитектурным челленджем связаным
с адаптаций оракловых объектов (partitions ха-ха... с Оракловым композитным партицированием) в PG,
и само по себе переписывание SQL покажется детской игрой по сравнению с созданием нового продукта
для PG. Опять-же. ORM может покрыть только меньшую часть проблем.
27 май 21, 14:16    [22327986]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 9 10 11 12 13 14 15 16 [17] 18   вперед  Ctrl
Все форумы / Java Ответить