powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / многопоточка и хибер - как правильно?
25 сообщений из 29, страница 1 из 2
многопоточка и хибер - как правильно?
    #39527282
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ситуация - есть поток А с открытой хиберовской сессией, там создается некоторая сущность, ее айдиха передается в поток Б, а в потоке А сессия еще не закрыта и в итоге поток Б айдишку этой сущности найти не может. что вполне логично.

Какой подход лучше тут использовать? передавать айдиху в параллельный поток уже после закрытия транзакции (что сложно) или же можеет как то сделать чтоб второй поток ждал появления айдихи? или что-то третье? и вообще подход у меня неверен в обоих случаях?
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527326
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTКакой подход лучше тут использовать?
хибер не потокобезопасен.
Какая необходимость кидать данные туду сюда между потоками.
Это не любит не только хибер, но все технологии. Не побоюсь этого слова)).
- кидай ID в другой поток и там заново Новая сессия и загрузить новый объект по этому ID
andreykaTи вообще подход у меня неверен в обоих случаях?
неверен.
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527328
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTтам создается некоторая сущность,
Хибер нужен только сохранить.
Поэтому без хибера создал в потоке объекты, поигрался с ними всеми ядрами и потоками, а потом всё в одном потоке передал коллекцией в хибер и сохранил.
Иначе зачем тебе потоки?
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527332
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTКакой подход лучше тут использовать?

Скорее всего вы неправильно решаете задачу, но я не стану вас уговаривать :)

В вашем случае если сущность рид-онли,то можно использовать кэш второго уровня, по-моему он потокобезопасен. Если же вы вытянули сущность в одном потоке, поменяли ее и передав в другой поток хотите работать с измененной версией - то могу вам только пожелать удачи.
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527333
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да. согласен. в других местах это решил тем, что в параллельные потоки передавал не ссылку на объект (в контексте хибера и бд - это айдишка на строку в таблице), а копию объекта.

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

в предыдущем проекте где я сидел, там челы особо не парились и всё делали в одном потоке. никаких проблем с дедлоками базы или блокировками (в рамках одной задачи), всё было замечательно до тех пор, пока между реквестом и респонзом с фронта стало проходить по 15 секунд )))
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527334
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
где это надо? ну например, у меня произошла какая-то активити в системе, которая породила объект, в фоне есть мешок слушателей, что должны по факту появления этого объекта в системе сделать какие-то свои действия. да, чтоб не париться можно всё это делать в одном потоке. а можно выпендриться и сделать каждому слушателю отдельный поток, ну или пул потоков в котором слушатели сами в очередь выстраются. впрочем, это уже частности. а суть в том - что да, тут приходится задействовать асинхронку, потому, что слушатели сами по себе представляют из себя достаточно тяжелые процессы.


Это все замечательно, но к первоначальному вопросу отношения мягко говоря не имеет. Ну и городить пулы тоже не надо, когда есть стандартные проверенные временем брокеры сообщений
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527335
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTпока между реквестом и респонзом с фронта стало проходить по 15 секунд
придёт третий после тебя и скажет: "ну тут чел и намутил со своей асинхронностью))
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527336
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTчелы особо не парились и всё делали в одном потоке.
- в одном потоке НЕ тяжёлые задачи.
- все тяжёлые в фоновые.
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527338
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никandreykaTКакой подход лучше тут использовать?

Скорее всего вы неправильно решаете задачу, но я не стану вас уговаривать :)

В вашем случае если сущность рид-онли,то можно использовать кэш второго уровня, по-моему он потокобезопасен. Если же вы вытянули сущность в одном потоке, поменяли ее и передав в другой поток хотите работать с измененной версией - то могу вам только пожелать удачи.
да все спорные места я перевел на копии объектов. осталось только одно. ))
на самом деле, проблема в том, что сущность создается, и вроде как сохраняется (репо возвращает айди сущности), эта айдишка передается в параллельный поток, а поток читая эту сущность из репо получает налл )) т.е. в базе сущности вроде как НЕТ )))

решения с наскока вижу здесь два: передавать айди сущности после закрытия сессии -- работает. и в параллельном потоке каким-то образом ПОДОЖДАТЬ появления этой сущности в базе

первый ариант - в рамках спринг приложения, к сожалению, с особенностями работы его АОПа чтоб это делать надо городить какие-то лютые фасады и из одного бина дергать другой, по возврату значения запускать параллельные потоки -- волосатый код. или менять аоп на аспектджей - тогда можно играться транзакциями внутри бина.
второй вариант на мой взгляд не менее костыльный ))) я даж не представляю как бы это сделать. на ум приходят какие-нибудь монады, но у меня ума не хватает понять как это всё обставить чтоб без волос получилось. или костыль - засунуть в цикл вайл фолс - еще хуже.
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527339
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTзабыл никпропущено...


Скорее всего вы неправильно решаете задачу, но я не стану вас уговаривать :)

В вашем случае если сущность рид-онли,то можно использовать кэш второго уровня, по-моему он потокобезопасен. Если же вы вытянули сущность в одном потоке, поменяли ее и передав в другой поток хотите работать с измененной версией - то могу вам только пожелать удачи.
да все спорные места я перевел на копии объектов. осталось только одно. ))
на самом деле, проблема в том, что сущность создается, и вроде как сохраняется (репо возвращает айди сущности), эта айдишка передается в параллельный поток, а поток читая эту сущность из репо получает налл )) т.е. в базе сущности вроде как НЕТ )))

решения с наскока вижу здесь два: передавать айди сущности после закрытия сессии -- работает. и в параллельном потоке каким-то образом ПОДОЖДАТЬ появления этой сущности в базе

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

wtf?? Почему бы просто не закомитить транзакцию? Вы как разруливать то собираетесь, если вдруг база нае..рнется с этой вашей асинхронщиной )
Хибернейт не пишет прямо в базу при создании сущности, он делает это либо при закрытии сессии, либо при прямом коммите или
flush.
В общем ваш подход очень и очень порочен
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527340
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTи вроде как сохраняется
известный факт, что другие сессии увидят после закрытия сессии этой.
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527342
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTПОДОЖДАТЬ появления этой сущности в базе
если производительность устраивает, то в сущность завести флаг ОчереднойШагОбработки.
Потом один поток создаёт и сохраняет.
Второй поток периодически сканирует базу и делает второй шаг обработки.
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527343
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andreykaTчелы особо не парились и всё делали в одном потоке.
- в одном потоке НЕ тяжёлые задачи.
- все тяжёлые в фоновые.
ну вот сделали они в одном потоке отсылку 20 тысяч пуш уведомлений ))) причем, уникальных. а так согласен. к4то ж спорит.
у меня ситуация, что есть некий код, который передает айдишку кварцу, который запускает задачу немедленно. естественно в параллельном потоке и запускает ее до того как закрылась транзакция, создавшая эту айдишку. и в один поток вогнать это и нельзя и не надо.
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527344
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andreykaTПОДОЖДАТЬ появления этой сущности в базе
если производительность устраивает, то в сущность завести флаг ОчереднойШагОбработки.
Потом один поток создаёт и сохраняет.
Второй поток периодически сканирует базу и делает второй шаг обработки.
имхо, это примерно так же как цикл крутить с тредслипом в надежде получить наконец значение. в общем, решение имеет место быть но, как то не просто.
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527345
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andreykaTПОДОЖДАТЬ появления этой сущности в базе
если производительность устраивает, то в сущность завести флаг ОчереднойШагОбработки.
Потом один поток создаёт и сохраняет.
Второй поток периодически сканирует базу и делает второй шаг обработки.

Да все что угодно, главное не сессии хиберовские шарить Вплоть до сериализации энтити в json какой-нить и шлем в мессадж брокер, делов то. Ну это если транзакции не важны
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527346
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никВплоть до сериализации энтити в json какой-нить
+1
я не знаю, что он до хибера докопался.
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527347
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
транзакции в данном контексте не важны. ну в общем. всё верно в моем подходе - слать копии объектов. осталось придумать как сделать в одно движение копию хиберской сущности. хибернейтутилз.копипропертиз не предлагать )) сериализовать в джейсон - тоже не очень удачный вариант (в моем конкретном случае разумеется)
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527352
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никВплоть до сериализации энтити в json какой-нить
Ну в пределах одной jvm это перебор. Тут можно и бинарной сериализацией обойтись. :)
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527353
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
ну, если из базы доставать, то ты секунды 2 теряешь, зато транзакционность и надёжность.
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527355
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можно ли как то в рамках спринга передать какой-то этакий объект который как футура будет стоять до тех пор пока результат внутри него не появится?
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527357
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTтранзакции в данном контексте не важны. ну в общем. всё верно в моем подходе - слать копии объектов. осталось придумать как сделать в одно движение копию хиберской сущности. хибернейтутилз.копипропертиз не предлагать )) сериализовать в джейсон - тоже не очень удачный вариант (в моем конкретном случае разумеется)

Что там за сущность такая? Вариантов сериализации море, начиная от ручного Externalizable заканчивая Dozer
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527359
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя нет глупость написал. сделать то можно но это такие дрова будут что лучше не надо. всё-равно внутри будет что то что будет пытаться прочесть это с базы.
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527360
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTя даж не представляю как бы это сделать. на ум приходят какие-нибудь монады, но у меня ума не хватает понять как это всё обставить чтоб без волос получилось. или костыль - засунуть в цикл вайл фолс - еще хуже.
Просто прозреваю как на пустом месте можно такой трешак себе создать .

Рискну предположить что вся эта логика решат какую-то тривиальную штучку...
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527361
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,

да ничего особого. создается сущность, передается айдишка сущности в джобу кварца которая немедленно запускается, и джоба что-то там с этой сущностью делает, предварительно прочитав ее из базы (скажем, емейл шлет кому-нибудь). я вот ща подумал - самый дубовый вариант - джобу запускать с задержкой. )) воркэраунд.
...
Рейтинг: 0 / 0
многопоточка и хибер - как правильно?
    #39527362
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonandreykaTя даж не представляю как бы это сделать. на ум приходят какие-нибудь монады, но у меня ума не хватает понять как это всё обставить чтоб без волос получилось. или костыль - засунуть в цикл вайл фолс - еще хуже.
Просто прозреваю как на пустом месте можно такой трешак себе создать .

Рискну предположить что вся эта логика решат какую-то тривиальную штучку...
грубо очень грубо созадется некий набор атрибутов для сферической задачи в вакууме и в джобу передается айдишка этого набора атрибутов, по которым потом порождается целый мешок действий и в базе появляется еще мешок сущностей. нет не тривиальный )) все тривиальные я уже пофиксил ))
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / многопоточка и хибер - как правильно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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