|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
andreykaT PetroNotC Sharp andreykaT, А тебе? Ты же два слова связать не можешь. Обычно троечники возмущаются отличниками) а мне не сказали. читай заголовки в следующий раз внимательнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 11:49 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
andreykaT, >а мне не сказали Табаки)) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 11:52 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, смотри в чем дело вот простейшая сучность Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
вот ее ддлка Код: plsql 1. 2. 3. 4. 5.
что далее при инсерте мы получаем то что и ожидаем вот код на вставку,тут генерируется 100 сучностей Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
сгенерированый список записывается методом save() -стандартный метод JPARepository Код: java 1. 2. 3. 4. 5. 6.
два селекта в sequence и 1 булк инсерт Код: java 1. 2. 3.
тут все хорошо идем далее берем из базы эти сучности ,сеттим им новое имя - складываем в лист и сохраняем тем же методом save() Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
при этом мы получаем вот такую картину Код: java 1. 2. 3.
где видно что хибер сделал 100 запросов в бд ,я посмотрел что это за запросы это обычный селект сучности A из таблицы А вопрос зачем хибер это делает и как этого избежать ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:00 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, а если между findAll() и saveAll(list), кто то чета изменил? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:07 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:10 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Убери for и разберись пока без него ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:12 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, авторкак этого избежать убрать прокладку. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:13 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
am_sasa O_79_O, а если между findAll() и saveAll(list), кто то чета изменил? ну так я и изменил - все верно почему делаются селекты в бд ,если и так есть перситенс сущности или ты намекаешь на то,что хибер делает dirty check чтоли вот этими селектами ,сравнивая текущее состояние сучности с состоянием в бд? если это так то как тогда делать булк апдейты? писать nativeQuery типо update .... set .... where .....? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:17 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, хибер для двухзвенной архитектуры , и он подразумевает, что есть и другие хиберы (у других юзеров) которые могли изменить. вот он и перестраховывается ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:27 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадя O_79_O, авторкак этого избежать опять ты за свое ,хотел бы я посмотреть на тебя,как ты выпилишь хибер из уже существующего проекта ,кто это согласует и самое главное кто оплатит? ты бизнесу что скажешь? извините мы пару лет назад ошиблись при выборе стека технологий,дайте нам еще годик на перевод системы на новое ядро?))) Вадя обычно при приеме на работу разработчки среднего звена работают с тем,что есть ,мы лишь можем порекомендовать лиду что то. Ну он скажет да - было бы здорово и на этом все закончится) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:29 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадя O_79_O, хибер для двухзвенной архитектуры , и он подразумевает, что есть и другие хиберы (у других юзеров) которые могли изменить. вот он и перестраховывается ну теперь все понятно стало,тоесть фактически булк апдейт можно сделать лишь непосредственно прямым запросом,не вытаскивая сущности из базы. Хорошо хотя бы то,что новые сучности инсертятся булком,ну а апдейт - конечно печалька. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:32 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, >если это так то как тогда делать булк апдейты? = не дошло? Crud это не булки, пакеты, импорты, и экспорты. Все уже на форуме это знают ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:39 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O или ты намекаешь на то,что хибер делает dirty check чтоли вот этими селектами ,сравнивая ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:44 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадя O_79_O, авторкак этого избежать ну вот смотри - у меня есть некие запииси в таблице,я их оттуда достал - модифицировал и обратно сохранил причем я не знаю в какие колонки и в каких записях были поменны,как ты это сделаешь без просйлоки? начнешь писать тонны бойлер кода а хибер дает тебе вомзможность сделать это в одну строчку saveAll(List list) при этом он выполнит теже операции что и ты ,а может и меньше за счет кеширования ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 13:28 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O вадя O_79_O, пропущено... убрать прокладку. ну вот смотри - у меня есть некие запииси в таблице,я их оттуда достал - модифицировал и обратно сохранил причем я не знаю в какие колонки и в каких записях были поменны,как ты это сделаешь без просйлоки? начнешь писать тонны бойлер кода а хибер дает тебе вомзможность сделать это в одну строчку saveAll(List list) при этом он выполнит теже операции что и ты ,а может и меньше за счет кеширования ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 13:30 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадяхибер для двухзвенной архитектуры , и он подразумевает, что есть и другие хиберы (у других юзеров) которые могли изменить. вот он и перестраховываетсяПерестраховывается? Другие хиберы? Вадя как обычно комментирует в темах в которых нисколько не разбирается *facepalm* O_79_Oну теперь все понятно стало,тоесть фактически булк апдейт можно сделать лишь непосредственно прямым запросом,не вытаскивая сущности из базы.Я не уверен что ты правильно используешь термин bulk update. Bulk/batch обновления это про hibernate.order_updates , hibernate.order_inserts . Никаких select'ов при insert'e новых данных быть не должно. И смотреть для дебага нужно не статистику, а show_sql и use_sql_comments, и желательно логирование на уровне драйвера ( см. тут ) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 13:33 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O Pвопрос зачем хибер это делает и как этого избежать у тебя find и saveAll выполняются в разных транзакциях, т.е. в saveAll ты передаешь сущности, которые персистенс-контексту не известны (он их не загружал), а разработчики spring-data-jpa влепили в save вызывов em.merge() отсюда у тебя лишние селекты. вообще у тебя должно выглядеть все так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 13:42 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, автору меня есть некие запииси в таблице,я их оттуда достал - модифицировал и обратно сохранилтут проблема в том, что ты работаешь с записями, которые извлек. и они у тебя в коде. с записями, а не с одной записью. и даже когда у тебя один сервер с хибером - свой набор сучностей у каждого коннекта, по сути двухзвенка. тут надо логику менять, не держать в памяти кучу данных в листах. клиент изменил поле надо отправить на сервер и проанализировать кто ещё оперирует с этой записью, чтоб исключить спорную ситуацию с изменением ем данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 13:42 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, авторкоторые могли изменить. вот он и перестраховывается Перестраховывается? Другие хиберы? Вадя как обычно комментирует в темах в которых нисколько не разбирается *facepalm*ты читай правильно - в двухзвенной системе хибер есть у каждого клиента. они ничего не знают о состоянии друг друга ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 13:48 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадя Stanislav Bashkyrtsev, авторкоторые могли изменить. вот он и перестраховывается Перестраховывается? Другие хиберы? Вадя как обычно комментирует в темах в которых нисколько не разбирается *facepalm* ну не укаждого хибер есть все таки, а только что сессии разные. ибо сессия к потоку привязана. @PostMapping а это видимо коттроллеры и если все стандартно спринг бут томкат то каждый запрос отдельный поток и отдельная сессия. Хиренейт не видит в новой сесии объекты и освежает их запросом к бд. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 14:34 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
lleming, авторну не укаждого хибер есть все таки, а только что сессии разные. ибо сессия к потоку привязана. ну это уже тонкости, которые тут роли не играют. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:02 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Андрей Панфилов O_79_O Pвопрос зачем хибер это делает и как этого избежать у тебя find и saveAll выполняются в разных транзакциях, т.е. в saveAll ты передаешь сущности, которые персистенс-контексту не известны (он их не загружал), а разработчики spring-data-jpa влепили в save вызывов em.merge() отсюда у тебя лишние селекты. вообще у тебя должно выглядеть все так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
как обычно чотко и по делу,спасиб за совет самое смешное я прекрасно помню что хибер отслеживает состоянии персистеной сущности и любое изменение акутализирует,но анотацию ума поставить не хватило) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:04 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
lleming вадя Stanislav Bashkyrtsev, пропущено... ты читай правильно - в двухзвенной системе хибер есть у каждого клиента. они ничего не знают о состоянии друг друга ну не укаждого хибер есть все таки, а только что сессии разные. ибо сессия к потоку привязана. @PostMapping а это видимо коттроллеры и если все стандартно спринг бут томкат то каждый запрос отдельный поток и отдельная сессия. Хиренейт не видит в новой сесии объекты и освежает их запросом к бд. так причем тут контроллер вообще?Ты же видешь что работа идет в рамках одного запроса - тоесть по сути не важно контроллер это или обычный тест бы дергал метод этот. А вот то что findAll и saveAll выполняются в двуз разнызх транзакциях - я забыл,хотя читал про то что у хибера без анотации @Transactional любой такой запрос это одна транзакция ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:08 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O lleming пропущено... ну не укаждого хибер есть все таки, а только что сессии разные. ибо сессия к потоку привязана. @PostMapping а это видимо коттроллеры и если все стандартно спринг бут томкат то каждый запрос отдельный поток и отдельная сессия. Хиренейт не видит в новой сесии объекты и освежает их запросом к бд. так причем тут контроллер вообще?Ты же видешь что работа идет в рамках одного запроса - тоесть по сути не важно контроллер это или обычный тест бы дергал метод этот. А вот в тесте никто бы сессию не открыл без @Transactional. Разве что это RestAssured и/или MockMvc тесты. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:33 |
|
|
start [/forum/topic.php?fid=59&msg=40085028&tid=2120389]: |
0ms |
get settings: |
25ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
606ms |
get tp. blocked users: |
1ms |
others: | 287ms |
total: | 998ms |
0 / 0 |