Size: a a a

2021 April 05

E

Emin in pro.jvm
Alexey Genus
Ну сколько у вас зависимостей в помке и сколько у них транзитивных? Уверен, что не парочка
проверил, нету
источник

AG

Alexey Genus in pro.jvm
Странно, конечно
источник

E

Emin in pro.jvm
Мне кажется что граб скачивает мускул, а вот сам инстанс не видит драйвер
источник

SP

Sergey Pavlenko in pro.jvm
Роман Нагаев
ну ты же хочешь вывести только последний визит по клиенту а не все? и сделать это через связь
меня устроит забрать из БД ВСЕ визиты по клиенту (последний я возьму как крайний элемент коллекции).
просто не могу понять как заставить hibernate засэтать вложенную коллекцию у вложенного элемента...
добавил джоин фетч по визитам и итоговый запрос содержит все джоины, но хибер всё равно потом бежит и дёргает ещё раз таблицу визитов по каждому клиенту.. не пойму почему...

hql запрос:
           "FROM Abonement a " +
           "JOIN FETCH a.abonType " +
           "JOIN FETCH a.client " +
           "JOIN FETCH a.contentItems i " +
           "JOIN FETCH Visit v ON v.client.id = a.client.idv.client.id = a.client.id " +
           "WHERE i.product.id = :productId AND a.statusId = :statusId")
источник

SP

Sergey Pavlenko in pro.jvm
т.е. чтобы вернулись экземпляры с заполненными полями в том числе abonement.client.visits за один заход
источник

РН

Роман Нагаев... in pro.jvm
Sergey Pavlenko
меня устроит забрать из БД ВСЕ визиты по клиенту (последний я возьму как крайний элемент коллекции).
просто не могу понять как заставить hibernate засэтать вложенную коллекцию у вложенного элемента...
добавил джоин фетч по визитам и итоговый запрос содержит все джоины, но хибер всё равно потом бежит и дёргает ещё раз таблицу визитов по каждому клиенту.. не пойму почему...

hql запрос:
           "FROM Abonement a " +
           "JOIN FETCH a.abonType " +
           "JOIN FETCH a.client " +
           "JOIN FETCH a.contentItems i " +
           "JOIN FETCH Visit v ON v.client.id = a.client.idv.client.id = a.client.id " +
           "WHERE i.product.id = :productId AND a.statusId = :statusId")
хмм, ну если очень хочется, то вот мои версии:
1) возможно он не может заджойнить потому что ты идёшь не стой стороны связи (есть ограничения, почитай про овнера связи)
2) возможно твоя реализация jpa не может такой фетч провернуть
3) возможно криво настроены связи, или криво сделан фетч, меня смущает ON

ещё стоит сказать что не факт что джойны будут эффективней чем N+1 потому что они порождают Cartesian Product Problem

и вообще хибер - не лучшее решение для отчётов и прочих отображений данных, он для крудов, скорее всего в этом случае ты получишь от использования хибера больше проблем чем пользы
источник

DI

Denis Ivanets in pro.jvm
А есть кто-нибудь, кто уже долгое время честно по TDD разрабатывает?
источник

Т

Тарас in pro.jvm
Роман Нагаев
хмм, ну если очень хочется, то вот мои версии:
1) возможно он не может заджойнить потому что ты идёшь не стой стороны связи (есть ограничения, почитай про овнера связи)
2) возможно твоя реализация jpa не может такой фетч провернуть
3) возможно криво настроены связи, или криво сделан фетч, меня смущает ON

ещё стоит сказать что не факт что джойны будут эффективней чем N+1 потому что они порождают Cartesian Product Problem

и вообще хибер - не лучшее решение для отчётов и прочих отображений данных, он для крудов, скорее всего в этом случае ты получишь от использования хибера больше проблем чем пользы
Я правильно понял, что хибер плох при высокой вложенности коллекций друг в друга ?
источник

AE

Alexandr Emelyanov in pro.jvm
Тарас
Я правильно понял, что хибер плох при высокой вложенности коллекций друг в друга ?
Нет, он для этого и делался
источник

I

Ilia in pro.jvm
Denis Ivanets
А есть кто-нибудь, кто уже долгое время честно по TDD разрабатывает?
ТДД необязательно тест фёст
источник

DI

Denis Ivanets in pro.jvm
Ilia
ТДД необязательно тест фёст
красный-зеленый-рефакторинг вроде как стандарт тдд, не?
источник

I

Ilia in pro.jvm
Denis Ivanets
красный-зеленый-рефакторинг вроде как стандарт тдд, не?
ну вот самый первый красный запуск он совсем для фанатиков
источник

I

Ilia in pro.jvm
когда даже класса тестируемого ещё нет, тупо не компиляется
источник

I

Ilia in pro.jvm
а на базе пустой имплементации тест фейлящийся это нормас. База для того, чтоб что-то полезное дальше писать/дебажить
источник

I

Ilia in pro.jvm
так очень многие пишут код
источник

DI

Denis Ivanets in pro.jvm
Ilia
ну вот самый первый красный запуск он совсем для фанатиков
не буду спорить, вполне возможно это и правда часто не требуется
Я на самом деле спрашивал, чтобы узнать у тех, кто практикует экстремальное программирование, тдд пару лет хотя бы, какие впечатления и отзывы
источник

АЦ

Андрей Царев... in pro.jvm
Есть десяток микросервисов на java собираемых CI, из них нужно раз в спринт собрать дистрибутив. В дистрибутив должны войти совместимые между собой версии микросервисов, но такие, в которых qa не нашли критических дефектов. Как бы вы собирали такой дистрибутив?
источник

SP

Sergey Pavlenko in pro.jvm
Роман Нагаев
хмм, ну если очень хочется, то вот мои версии:
1) возможно он не может заджойнить потому что ты идёшь не стой стороны связи (есть ограничения, почитай про овнера связи)
2) возможно твоя реализация jpa не может такой фетч провернуть
3) возможно криво настроены связи, или криво сделан фетч, меня смущает ON

ещё стоит сказать что не факт что джойны будут эффективней чем N+1 потому что они порождают Cartesian Product Problem

и вообще хибер - не лучшее решение для отчётов и прочих отображений данных, он для крудов, скорее всего в этом случае ты получишь от использования хибера больше проблем чем пользы
1) связь везде двунаправленная.. но почитаю этом момент
3) без ON (т.е. через "JOIN FETCH a.client.visits") я вообще ловлю org.hibernate.loader.MultipleBagFetchException
+ SQL то генерится верный, если его взять и отправить нативно в БД, то всё выдаётся.

ещё стоит сказать что не факт что джойны будут эффективней чем N+1
ну это звучит странновато. например, нативный запрос выполняется 2-3 сек и возвращает 10к+ записей. если сгруппировать и агрегировать, то там 200 записей за 0,5 сек.

ещё особенность в том приложуха и БД у меня на разных машинах...
так вот с N+1 локально у меня выполняется сек 5, собирая коллекции визитов всего по тем же 200 клиентам, удовлетворяющим условию...  т.е. ~200 доп запросов, а если их будет 5000?
а вот приложуха задеплоенная на heroku вообще не дожидается ответа по таймауту, т.е. тупо не работает..

хибер - не лучшее решение для отчётов и прочих отображений данных, он для крудов
так а чем это не круд  - получить сущности? просто там есть второй уровень вложенности...
отчёт это я уж для наглядности контекста приплёл... что с этими сущностями делать и как их обрабатывать - дело 10ое..

в любом случае спасибо за размышления...

возможно это следствие  подкопотной работы хибера.. там же есть много "фичей", порождающих доп запросы...на эту тему есть доклад "Николай Алименков - Босиком по граблям Hibernate":
ww.youtube.com/watch?v=YzOTZTt-PR0&feature=youtu.be
источник

НБ

Никита Берегуля... in pro.jvm
Андрей Царев
Есть десяток микросервисов на java собираемых CI, из них нужно раз в спринт собрать дистрибутив. В дистрибутив должны войти совместимые между собой версии микросервисов, но такие, в которых qa не нашли критических дефектов. Как бы вы собирали такой дистрибутив?
Возможно не совсем то что нужно, но тут в середине будет про versioning policy, compatibility sets и т.д.

https://youtu.be/_-NRlfur9gE
источник

AE

Alexandr Emelyanov in pro.jvm
Sergey Pavlenko
1) связь везде двунаправленная.. но почитаю этом момент
3) без ON (т.е. через "JOIN FETCH a.client.visits") я вообще ловлю org.hibernate.loader.MultipleBagFetchException
+ SQL то генерится верный, если его взять и отправить нативно в БД, то всё выдаётся.

ещё стоит сказать что не факт что джойны будут эффективней чем N+1
ну это звучит странновато. например, нативный запрос выполняется 2-3 сек и возвращает 10к+ записей. если сгруппировать и агрегировать, то там 200 записей за 0,5 сек.

ещё особенность в том приложуха и БД у меня на разных машинах...
так вот с N+1 локально у меня выполняется сек 5, собирая коллекции визитов всего по тем же 200 клиентам, удовлетворяющим условию...  т.е. ~200 доп запросов, а если их будет 5000?
а вот приложуха задеплоенная на heroku вообще не дожидается ответа по таймауту, т.е. тупо не работает..

хибер - не лучшее решение для отчётов и прочих отображений данных, он для крудов
так а чем это не круд  - получить сущности? просто там есть второй уровень вложенности...
отчёт это я уж для наглядности контекста приплёл... что с этими сущностями делать и как их обрабатывать - дело 10ое..

в любом случае спасибо за размышления...

возможно это следствие  подкопотной работы хибера.. там же есть много "фичей", порождающих доп запросы...на эту тему есть доклад "Николай Алименков - Босиком по граблям Hibernate":
ww.youtube.com/watch?v=YzOTZTt-PR0&feature=youtu.be
Сущности покажи
источник