|
|
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Собссно вопрос, где на практике могут пригодиться проекции? Я имею ввиду в боевых условиях. Смотрю на них и не понимаю, ну да прикольно среднее значение вытащить по столбцу и т.п. но.. зачем?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2016, 07:52 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaT, Вопрос более чем страный. org.hibernate.criterion.Projections это часть Criteria API. Что логично следует из названия пакета. AVG, MAX, и прочее это часть SQL стандарта. Вас удивляет что Criteria API покрывает SQL стандарт? Вас удивляет наличие Criteria API в принципе? Мы, например, count часто использовали. У нас в ERP, как это обычно бывает, очень жирные формы поиска. По этим формам приходится строить динамические запросы, и Criteria API для этой задачи не заменим. Для реализации постраничной выборки, вполне логично посылать два запроса, один на количество, второй на сами записи. Переформулируйте вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2016, 09:07 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, у меня вопрос такого плана. Есть приложение некое. Связанное с торговолей. в базе есть таблица склдаская прихода-ухода товара. просто таблица где содержатся сведения о том по какой цене пришел по какой цене ушел какое количество ну и собссно что за товар. теперь из этой таблы надо сделать отчет, типа топ продаваемых по количеству, топ продаваемых по прибыли, топ продаваемых по совокупному доходу и т.п. собссно у меня вопрос следующий: я это без проблем всё могу сделать средствами голой явы, ну там коллекциями-итерациями-стортировками и т.п. НО. тут вот есть мнение что на яве это делать уоще плохо и непрофессионально и делать надо это еще на уровне базы. т.е. либо голым сулем либо хибером с проекциями и т.п. а проблема в следующем: вот я смотрю и на проекции и на критерии в принципе, и что то у меня в голове никак не вырисовывается простое решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 08:05 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaT, Отчеты лучше сразу делать нормально. На Pentaho или JasperReports + SQL, конечно же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 08:19 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, ну хорошо, но если забор не городить? т.е. по вашему мнению: ни хибер ни ява под эти дела не подходят? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 08:47 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaTну хорошо, но если забор не городить? т.е. по вашему мнению: ни хибер ни ява под эти дела не подходят? Pentaho и JasperReports написаны на Java. Они уже умеют всё то что вы можете написать самостоятельно и даже на много больше. Некоторые умудряются писать отчеты на HQL/Criteria API, но особого смысла я в этом не вижу. ORM нужен для CRUD. Отчеты - совсем другая история. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 08:49 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, я просто с жаспером не сталкивался.. может там действительно проще, но я не понимаю ну почему логику создания таких вот относительно "сложных" репортов проще делать в жаспере а не в яве описАть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 09:06 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaTя просто с жаспером не сталкивался.. может там действительно проще, но я не понимаю ну почему логику создания таких вот относительно "сложных" репортов проще делать в жаспере а не в яве описАть? Что такое "в яве описАть" мне не понятно. Проще там что любой мало-мальски успешный проект имеет тенденции к развитию и усложнению. Если вы не верите в проект, то зачем вы им занимаетесь. Если верите - то почему не хотите использовать готовые инструменты, которые закроют часть будущих требований на несколько лет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 09:12 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
описАть я подразумеваю в том контексте, что вот есть у тебя набор каких то данных в листе, тебе там надо что то сложить что то перемножить что то где то пересчитать, что-то вообще выбросить. следом сформировать уже новый лист и отправить его на вьюшку клиенту. Как то так я имею ввиду. Джаспер репортс - это отдельный инструмент и его как бы осваивать надо, а джаву вроде как уже всю знаешь. Я не ленюсь просто задаюсь вопросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 09:17 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
вот отличный вариант из жизни : Есть таблица из которой вам нужно вытащить n последних операций по пользователю и терминалу : Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. вот код который создает айбернет для выборки 1 последней записи ... чтобы это все работало быстро нужно добавить индекс на три поля Код: sql 1. Код: sql 1. 2. 3. 4. 5. в mysql его EXPLAIN говорит о том что все ок ! .... минус такого запроса в том что у нас есть индекс большой и сложный и операция order by для выборки одной записи ... очень много записей нужно просмотреть ...даже использую индекс где то можно все это оптимизировать и если нам в 90 % случаях нужна 1 запись - то пишем нечто такое .... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. что очень сильно улучшаешь вам жизнь .... код на айбернейте для данного запроса прошу написать вам :) для самопроверки и понимания . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 12:07 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
session.createQuery("from mytable ORDER BY id DESC").setMaxResults(1).uniqueResult(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 12:15 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Atum, по SQL. Убрал в spoiler, т.к. много букв: Atum1....чтобы это все работало быстро нужно добавить индекс на три поля CREATE INDEX `idx_login_terminalId_creationDate` ON `LastOperation` (login, terminalId, creationDate) ... order by this_.creationDate desc limit 1; ... минус такого запроса в том что у нас есть индекс большой и сложный и операция order by для выборки одной записи ... очень много записей нужно просмотреть ...даже использую индекс Пользуйтесь правильными СУБД и умейти их готовить. Нормальные СУБД вполне order by по индексу умеют, т.ч. обращение может/должно быть всегда к одной записи. С MySQL работал очень давно ((( В Oracle - order by может потребовать явного хинтования (INDEX_ASC, INDEX_DESC). Первый попавшийся кусок из доки по PostgreSQL https://www.postgresql.org/docs/8.3/static/indexes-ordering.html "" IMHO & AFAIK Код: sql 1. 2. 3. 4. что очень сильно улучшаешь вам жизнь .... На мой взгляд, первый запрос намного более "правильный". C join, можно словить ряд приятность, если creationDate не уникальная. В данном случае, с limit 1 это не проявится, но лично я такие конструкции не люблю. В знакомых мне СУБД, max/min ничем не лучше order by с limit. Мне даже кажется, что в Oracle, этот вариант будет намного хуже. ==== Посмотрел первую попавшуюся доку по MySQL (перевод ужасный ((( половину примеров я не понял) http://www.mysql.ru/docs/man/ORDER_BY_optimisation.html подозреваю, что скорее всего, проблема с indexes и order by связана с пунктом: "...Столбцы индекса могут содержать значения NULL, и используется ORDER BY ... DESC. Это объясняется тем, что в SQL значения NULL всегда сортируются в первую очередь, независимо от того, используется DESC или нет...." Точно не знаю, могу высказать только предположение. IMHO. Плотно работал только с Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 12:33 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaTsession.createQuery("from mytable ORDER BY id DESC").setMaxResults(1).uniqueResult(); тут перекладывание части работы субд на java, что само по себе не оптимально. хоть и выглядит красиво - одна строка, но за этим фантиком скрыто куча лишних действий системы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 12:43 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
вадяandreykaTsession.createQuery("from mytable ORDER BY id DESC").setMaxResults(1).uniqueResult(); тут перекладывание части работы субд на java, что само по себе не оптимально. хоть и выглядит красиво - одна строка, но за этим фантиком скрыто куча лишних действий системы и что и что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 12:49 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaTвадяпропущено... тут перекладывание части работы субд на java, что само по себе не оптимально. хоть и выглядит красиво - одна строка, но за этим фантиком скрыто куча лишних действий системы и что и что? и то и то голову включи. сначала в субд отсортируешь , потом передаёшь в java, там перебираешь весь объём, чтоб найти максимум и выбираешь 1 значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 13:01 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
По доке setMaxResults эквивалентно limit. Это НЕ setFetchSize. Т.ч. разницы быть не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 13:05 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
вадяandreykaTпропущено... и что и что? и то и то голову включи. сначала в субд отсортируешь , потом передаёшь в java, там перебираешь весь объём, чтоб найти максимум и выбираешь 1 значение. серьезно? вам бы почитать как хибернейт работает. можно еще логи sql включить и посмотреть что реально в БД будет выполняться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 13:09 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
вадятут перекладывание части работы субд на java, что само по себе не оптимально. хоть и выглядит красиво - одна строка, ... сначала в субд отсортируешь , потом передаёшь в java, там перебираешь весь объём, чтоб найти максимум и выбираешь 1 значение. Вадя, ты просто набор каких-то домыслов, суеверий и заблуждений. В цитате выше в каждом предложении присутствует заблуждение. И при этом советуешь кому-то ещё "голову включать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 13:15 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Penkov Vladimirсерьезно? вам бы почитать как хибернейт работает. можно еще логи sql включить и посмотреть что реально в БД будет выполняться Он из принципа считает что ORM не нужен. При этом никогда его не использовал и понятия не имеет как он работает. Переубеждать бесполезно. Очередной Hibernate срач будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 13:16 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevAtum, по SQL. Убрал в spoiler, т.к. много букв: Atum1....чтобы это все работало быстро нужно добавить индекс на три поля CREATE INDEX `idx_login_terminalId_creationDate` ON `LastOperation` (login, terminalId, creationDate) ... order by this_.creationDate desc limit 1; ... минус такого запроса в том что у нас есть индекс большой и сложный и операция order by для выборки одной записи ... очень много записей нужно просмотреть ...даже использую индекс Пользуйтесь правильными СУБД и умейти их готовить. Нормальные СУБД вполне order by по индексу умеют, т.ч. обращение может/должно быть всегда к одной записи. С MySQL работал очень давно ((( В Oracle - order by может потребовать явного хинтования (INDEX_ASC, INDEX_DESC). Первый попавшийся кусок из доки по PostgreSQL https://www.postgresql.org/docs/8.3/static/indexes-ordering.html "" IMHO & AFAIK Код: sql 1. 2. 3. 4. что очень сильно улучшаешь вам жизнь .... На мой взгляд, первый запрос намного более "правильный". C join, можно словить ряд приятность, если creationDate не уникальная. В данном случае, с limit 1 это не проявится, но лично я такие конструкции не люблю. В знакомых мне СУБД, max/min ничем не лучше order by с limit. Мне даже кажется, что в Oracle, этот вариант будет намного хуже. ==== Посмотрел первую попавшуюся доку по MySQL (перевод ужасный ((( половину примеров я не понял) http://www.mysql.ru/docs/man/ORDER_BY_optimisation.html подозреваю, что скорее всего, проблема с indexes и order by связана с пунктом: "...Столбцы индекса могут содержать значения NULL, и используется ORDER BY ... DESC. Это объясняется тем, что в SQL значения NULL всегда сортируются в первую очередь, независимо от того, используется DESC или нет...." Точно не знаю, могу высказать только предположение. IMHO. Плотно работал только с Oracle тут нужно написать тот и тот запрос на таблице в 1 млн записей ... в которой по данным параметрам терминал ил огин будет по 100 т записей и построить EXPLAIN посмотреть время - замерить ... потом добавить индексы - замерить ... потом сравнить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 13:44 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaTsession.createQuery("from mytable ORDER BY id DESC").setMaxResults(1).uniqueResult(); нужно смотреть какой код будет генериться в логах ... и писать тесты и EXPLAIN делать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 13:45 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
авторВадя, ты просто набор каких-то домыслов, суеверий и заблуждений. В цитате выше в каждом предложении присутствует заблуждение. И при этом советуешь кому-то ещё "голову включать". если какая-то прокладка session.createQuery("from mytable ORDER BY id DESC").setMaxResults(1).uniqueResult(); в строку sql вставляет что-то своё это ещё один повод говорить, что прокладка не нужна и как с этой прокладкой производить оптимизацию исследовать EXPLAIN ... кто хочет пусть пользуется, я мозахизмом не занимаюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 14:03 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
возвращаясь к теме ) Открыл я этот джаспер репортс и понял, что на вид это какой то полу-шаблонизатор полу-язык разметки. :) т.е. всё с нуля осваивать. А как оно вообще работает? Он там как то хитро выстраивает скл запросы а потом красиво всё раскладывает, или же просто в себя вбирает тупо коллекции и так же их там пересчитывает-перекладывает и выкладывает на "вьюшки"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 16:10 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
вадяandreykaTпропущено... и что и что? и то и то голову включи. сначала в субд отсортируешь , потом передаёшь в java, там перебираешь весь объём, чтоб найти максимум и выбираешь 1 значение. с ума сойти. я канеш понимаю что хибер вроде опенсорса и там каждый школоло может понатворить дел. хотя, по честноку я сомневаюсь. И. Я не думаю что атм всё так сильно запущено :) тогда уж проще листом всю таблицу вытащить а потом гетнуть по индексу последнее значение. ))) Вадим, ну реально разницы нет между тем что ты сказал и то, что я описал только что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 17:11 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaT, тут одинаково мыслим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 17:18 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
вадяandreykaT, тут одинаково мыслим Вадим, вообще то это была ирония. Ну подумай сам, у тебя скажем, табла с 10М записей, ты действительно думашеь что умные дяди ничего не придумали, кроме как чтоб достать последнюю запись обязательно надо забрать в память ВСЮ таблицу? Да харош. этого не может быть, потому что этого не может быть никогда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 18:45 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaT, я не пойму в чём вопрос. Jasper делает отчёты в PDF\Word\Excell. Как ты это сделаешь на голой Java. ... Если говорить о формах на экране, а не отчётах, то делай на чём угодно. Всё от ГУИ зависит. Это Java. Ты должен уметь 3 способа. А не один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 18:48 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Petro123, стоп. у меня не стоит вопрос о том, как показывать репорты красиво. у меня стоит вопрос о том как из, скажем листа каких-то там объектов сделать уже другой лист, с некими сводными проанализированными и прокалькулироваными данными. в начале темы сказано что именно мне надо. я так понял, что джаспер умеет сам делать и выборку и аналитику и т.п. имея какой-то внутренний синтаксис специализированный для этого. А ты сейчас рушишь мои надежды и говоришь, что джаспер это по-сути шаблонизатор, один из многих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:02 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaT, давай так. Более конкретно. В Jasper есть входной запрос sekect * ........ на 15 страниц данных. И там есть несколько аналитических функций которые внизу этих страниц покажут сумму или среднее. Понятно, что сначала весь запрос обработает 1 раз выведет сумм сам без доп запроса. Что тут тебе непонятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:07 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaT, что значит лист объектов у JasperReport? У меня он работает на голом sql запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:10 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
IMHO если тебе надо банальные и простые аналитические функции (summ\avg\max), то это умеет ГУИ или движок Отчётника. Т.е. это делает ГУИ программист, а не Java программист с его хибером. Нужно понимать, что в Java очень много вещей дублируется друг у друга. Можно запросто изобретать велосипед и работать вхолостую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:13 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Например, у меня аналитик\заказчик ставит задачу так: - внизу таблиц под 2-мя колонками сделай сумму Итого. Т.е. в идеале я должен объекту таблице дать команду внизу колонки вывести сумму. Если это сделать вне таблицы отдельным полем TEdit то они визуально будут отдельно. Это не понравится заказчику. Получается что твой хибер идёт лесом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:18 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Petro123, ну не совсем. если жаспер точно так же забирает данные как селект * фром табель. то я не вижу разницы - жаспер это сделает или я жстлками разрисую а потом в пдф. задача следующая (не знаю простая она или нет) - есть сквозная таблица, где содержится инфа о приходе уходе товара. в контексте ухода идет сведения о партии, об отпускной цене, наценке и кто это купил. цель сделать таблицу (лист строк), в которой через серии будет вытащен товар (джойн привет), потом все серии потоварно будут скомпанованы в один "товар", потом собраны в кучу все отпускные цены и приходные цены, расссчитана суммарная разница между приход уход, рассчитана средняя наценка, показно общее количество отпущенного товара и отсортирована таблица по прибыли (или доход - вечно их путаю, профит короче). далее полученную модельку отправить клиенту в виде ясона, либо самому раскидать жстлом в жспшке. как это сделать на яве я знаю. я уже это сделал, НО зашел разговор что все эти расчеты надо делать на стадии скуля и уже из скуля доставать ГОТОВУЮ таблицу. и сейчас как бы вопрос скорее оптимальности - где это лучше делать и всё. честно скажу, так с ходу это сделать на уровне скуля мне знаний не хватит. на уровне хибера это будет трэшняк похлеще голой явы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:29 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaT, таблица ессно не из одного товара а из много товаров. 1 строка - 1 товар. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:30 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
авторВадим, вообще то это была ирония. Ну подумай сам, у тебя скажем, табла с 10М записей, ты действительно думашеь что умные дяди ничего не придумали, кроме как чтоб достать последнюю запись обязательно надо забрать в память ВСЮ таблицу? Да харош. этого не может быть, потому что этого не может быть никогда умные придумали для нормального использования, а дураки суют везде.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:34 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
вадяавторВадим, вообще то это была ирония. Ну подумай сам, у тебя скажем, табла с 10М записей, ты действительно думашеь что умные дяди ничего не придумали, кроме как чтоб достать последнюю запись обязательно надо забрать в память ВСЮ таблицу? Да харош. этого не может быть, потому что этого не может быть никогда умные придумали для нормального использования, а дураки суют везде.... мне нравится твоя игра слов, но очень жаль, что я не понял того, что ты говоришь :) раскрой мысль пожалуйста ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:36 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
автор НО зашел разговор что все эти расчеты надо делать на стадии скуля и уже из скуля доставать ГОТОВУЮ таблицу. и сейчас как бы вопрос скорее оптимальности - где это лучше делать и всё. честно скажу, так с ходу это сделать на уровне скуля мне знаний не хватит. на уровне хибера это будет трэшняк похлеще голой явы. ну вот с этого и надо начинать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:36 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaTстоп. у меня не стоит вопрос о том, как показывать репорты красиво. у меня стоит вопрос о том как из, скажем листа каких-то там объектов сделать уже другой лист, с некими сводными проанализированными и прокалькулироваными данными. То есть "теперь из этой таблы надо сделать отчет" это вообще не твои слова, а злые хакеры от твоего имени на форум запостили? andreykaTв начале темы сказано что именно мне надо. "где на практике могут пригодиться проекции?" это то что тебе надо? Это вопрос из начала темы. andreykaTя так понял, что джаспер умеет сам делать и выборку и аналитику и т.п. Никто сам ничего не умеет. Аналитика это вообще отдельная песня. В Jasper она только за деньги. В Pentaho забесплатно. Возможно ты имеешь ввиду Query Builder под "сам делать выборку"? А про "аналитику" вообще смешно. Ты в это слово что вкладываешь? andreykaTодин из многих. Твои рассуждения о системе отчетов на уровне рассуждений вади об ORM. Если тебе нужны отчеты, то JasperReports и Pentaho это оно. Если тебе не нужны, отчеты, то тебе, вероятно, нужно что-то другое. Но ты сам заикнулся об отчетах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:37 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaTну не совсем. если жаспер точно так же забирает данные как селект * фром табель. то я не вижу разницы - жаспер это сделает или я жстлками разрисую а потом в пдф. не select from table, а уже готовый запрос со всей аналитикой. Тебе же это сказали - ГОТОВАЯ таблица. Проблема в SQL запросе? Давай напишем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:39 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
автормне нравится твоя игра слов, но очень жаль, что я не понял того, что ты говоришь :) раскрой мысль пожалуйста ) мне трудно это разъяснить.... вроде элементарное... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:39 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, давай так, когда ты из кучи данных делаешь некую логически связную выборку - это тоже аналитика. буквоедствовать не буду, т.к. определение "аналитики" вообще само по себе достаточно пространное. я не вижу смысла перепираться на тему кто кого и как ввел в заблуждение, и уж тем более ругаться. я лишь зашел задать вопрос профессионалам и всё. если джаспер этого не умеет делать то окей - это лишь означает, что он мне для решения ЭТОЙ ЗАДАЧИ не нужен вот и всё. красивый отчетик я в конце-концов бахнуть могу и на апач-пои. )) но, да. это геморройно. У меня же речь идет именно что о получении некой коллекции с нужными мне элементами. кстати, одним из вариантов в джаспер и уходит такой вот лист в объектами, который он красиво и раскладывает по строчкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:46 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Petro123, окей, я вас понял :) кусок таблицы вытащу, покажу, чтоб более осязаемо говорить о вещи. ) может там действительно всё просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:48 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaTодним из вариантов в джаспер и уходит такой вот лист в объектами, который он красиво и раскладывает по строчкам. вот ты и покажи OR придумай простой пример. Т.к. я не понимаю как так работать с Jasper. Я готовлю для него запрос и могу показать как работаю я))). LOL И мне всегда интересно как работаешь ты))) LOL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 04:48 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Petro123andreykaTодним из вариантов в джаспер и уходит такой вот лист в объектами, который он красиво и раскладывает по строчкам. вот ты и покажи OR придумай простой пример. Т.к. я не понимаю как так работать с Jasper. Я готовлю для него запрос и могу показать как работаю я))). LOL И мне всегда интересно как работаешь ты))) LOL хз. какой то первый пример в яндексе как пользоваться яспером и вывел - там передавался просто лист "бинов" и в путь. ну суть в принципе та же: лист = таблица из скл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 07:33 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaT, Диалог сводится к следующему. - Подскажите как сделать, ведь я сам не знаю. - Делай так-то. - Объясните почему так. - Потому что... - Я не согласен. Я знаю как лучше. Блин. Ну, зачем было вообще спрашивать, если имеется своё собственное видение, понимание и полная уверенность в своей правоте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 09:18 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Блакович, я возможно некорректно выразился. Вас я в заблуждение вводить точно не хотел. Еще раз речь зашла о том, что надо вытащить некую сводную таблицу, которую Я назвал отчетом (возмножно не прав и это не отчет а как-то по-иному называется). А далее по тексту я предполагал, что "сводной" ее делать надо средствами хибера - ну там хитрые критерии каскадного вида, проекции и т.п. либо же просто перетасовкой коллекций. вот и всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 09:42 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaTБлакович, я возможно некорректно выразился. Вас я в заблуждение вводить точно не хотел. Еще раз речь зашла о том, что надо вытащить некую сводную таблицу, которую Я назвал отчетом (возмножно не прав и это не отчет а как-то по-иному называется). А далее по тексту я предполагал, что "сводной" ее делать надо средствами хибера - ну там хитрые критерии каскадного вида, проекции и т.п. либо же просто перетасовкой коллекций. вот и всё. Смотри. Тебе нужно реализовать сложную выборку. Projection это часть Criteria API. Criteria API полезны для составления динамических запросов. Динамические запросы, обычно, формируются в формах поиска с кучей опциональных параметров. Тебе нужны динамические запросы в "отчетах"? Разве что если у тебя десяток типовых запросов к разным сущностям. Тогда Criteria API как-то помогут переиспользовать код запросов. Если у тебя нет кучи опцирональных параметров. Если у тебя нет надобности строить динамические запросы, то зачем тут Criteria API? Едем дальше. Hibernate это ORM. Основная задача ORM это CRUD для сущностей с кучей ассоциаций. Тебе нужен CRUD? Нет! Тебе нужно вытаскивать всё дерево сущностей? Нет! Внимание вопрос. Зачем тебе для решения это задачи ORM? Только чтобы не писать JOIN-ы? Сомнительная выгода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 09:57 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Jasper Reports умеет делать все что ты хочешь - и группировку сделать и промежуточные итоги прокалькулировать (и показать их разумеется), можно даже свою сложную логику навернуть, да еще все красиво нарисовать с графиками, картинками и т.д. Просто это все будет делаться в процессе исполнения кода - on runtime, получается что конечно умеет аналитику, только она динамическая, которая при каждом запуске отчета будет отрабатывать. Здесь есть минусы: - если динамическая, значит не персистентная - нигде не хранится в отличие от OLAP кубов - жестко привязана к одной технологии - к Jasper Reports в данном случае - ограничение на большие выборки данных - больше 100 тыс. записей с более менее сложной аналитикой - и jasper уходит пить чай. Последний минус в общем и привел к возникновению хранилищ данных т.е. OLAP и соответствующих инструментов, за которые, как правило, просят денег :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 10:10 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
oneHalfПоследний минус в общем и привел к возникновению хранилищ данных т.е. OLAP и соответствующих инструментов, за которые, как правило, просят денег :) Поэтому для аналитики берут Pentaho CE, а для красивых отчетов - JasperReports CE. В принципе, там и лицензии не заоблачные, для большинства решений. Pentaho CE "за так" предлагает ETL, OLAP и прочее, что у JasperSoft только за деньги. Но, у JasperReports лучший pixel perfect движок для генерации отчетов, и, если я не ошибаюсь, у них более интересная интеграция в Web/JavaScript. Поэтому тут уже каждый решает для себя сам, в зависимости от количества данных и требований к результату. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 10:27 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaTPetro123пропущено... вот ты и покажи OR придумай простой пример. Т.к. я не понимаю как так работать с Jasper. Я готовлю для него запрос и могу показать как работаю я))). LOL И мне всегда интересно как работаешь ты))) LOL хз. какой то первый пример в яндексе как пользоваться яспером и вывел - там передавался просто лист "бинов" и в путь. ну суть в принципе та же: лист = таблица из скл. понятно. Я его использую по второму варинту. Через вызов по урл (REST). Тогда я его вызываю по урл, он подымает заранее написанный SQL запрос и САМ лезет в БД за данными по нему. Т.е. это вариант без бинов и листов)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 10:32 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
oneHalf, ну, 100к записей конечно требуют других решений и ПО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 10:35 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
OLAP то ли был то ли с какого то времени попал в CE: http://www.jaspersoft.com/editions?_ga=1.13558455.1204738042.1465372091 Без плюшек, конечно, но движок поставляется нахаляву :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 10:59 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
oneHalfБез плюшек, конечно, но движок поставляется нахаляву :) Прикольно. Буквально несколько месяцев назад сравнивал. Про OLAP не помню. Но ETL точно не было. Теперь есть в CE. Видать гонятся за Pentaho. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 11:04 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevНа мой взгляд, первый запрос намного более "правильный". C join, можно словить ряд приятность, если creationDate не уникальная. В данном случае, с limit 1 это не проявится, но лично я такие конструкции не люблю. В знакомых мне СУБД, max/min ничем не лучше order by с limit. Мне даже кажется, что в Oracle, этот вариант будет намного хуже. тут ,как мне кажется фишка вся в том что делая max подате с параметрами мы находим дату по индексу - а это очень быстро ... а дальше просто выбираем эту самую запись .. что в общем случае быстрее чем order by limit 1 /// в инете полно проблем для постраничного вывода как раз mysql order by limit 1 https://habrahabr.ru/post/217521/ Вопрос как этот запрос написать на DetachedCriteria Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. вроде как генерит верный код ,но ругается вот на что ... java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. видимо тут засада Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2016, 16:58 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
andreykaTBlazkowicz, "сводной" ее делать надо средствами хибера - ну там хитрые критерии каскадного вида, проекции и т.п. либо же просто перетасовкой коллекций. вот и всё. Экспортирую таблицы из хибернейт базу. Типичный запрос на каждую таблицу: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Причем чтобы реверсинжениритиь это занимает часов 5 минимум. В базе полсотни таблиц. Теперь вот скажите как человеку решившему прикрутить репорт или сделать экспорт выташить данные? Я бы авторов этих ОРМ систем душил бы в детстве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 08:46 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
LepsikПричем чтобы реверсинжениритиь это занимает часов 5 минимум. ничё не понял. ОРМ и хибер не строят БД и не делают структуру БД. Они только подстраиваются под вашу логически и физически правильную структуру таблиц. Поэтому что вы делали 5 часов непонятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 10:01 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Petro123ничё не понял. ОРМ и хибер не строят БД и не делают структуру БД. Ну это не совсем так. Hibernate на основе entity может создать БД. Точнее - таблицы, ключи (первичные и внешние), sequence. Причем если точно не описывать в аннотациях, то у Hibernate есть свои "умолчания", по которым он будет строить БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 10:03 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
mad_nazgulHibernate на основе entity может создать БД. может. Это не значит что это штатная операция в боевой БД у заказчика? Это так - игрушка. Не более того. Ты сам понял, зачем в БД у заказчика - JOIN PersistentEntityEntry? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2016, 17:50 |
|
||
|
Hibernate проекции
|
|||
|---|---|---|---|
|
#18+
Petro123mad_nazgulHibernate на основе entity может создать БД. Ты сам понял, зачем в БД у заказчика - JOIN PersistentEntityEntry? как вы прикрутите сторонний компонент к базе если он понимает только плоские таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2016, 11:14 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2123730]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
115ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 536ms |

| 0 / 0 |
