|
|
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
добрый день , как построить такой pipeline : stream->map to completablefuture join all -> get object Есть коллекция Enitity -> List<Enitity> Есть сервис куда их нужно передать он изменят их состояние , что то с ними делает , Есть сервис который их сохраняет в базу . Enitity Spring repository Для примера : Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. Хочется сделать 1+ 2 + 3 в одном стриме , вопрос как ? чтобы не терять тип и не получать на 2 шаге CompletableFuture<Void> видимо а вернуть CompletableFuture<Person> ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 19:01 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
А это обязательное требование, чтобы дождаться всех, прежде чем сохранять в БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 19:20 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
BlazkowiczА это обязательное требование, чтобы дождаться всех, прежде чем сохранять в БД? Да. Как сохранять тут же это ясно - просто в методе renamePerson делать save . Мы не тратим ресурса БД , а в конце делаем такой балк. Как вариант сохранять балками в отельном потоке набирая их по 100 шт , не дожидаясь всех ... но это сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 19:29 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
Atum1, не знаю, сработает ли, но можно попробовать вывести ссылку на CompletableFuture и залинковать их один на другого, чтобы join ждал себя+предыдущего и таким образом ждал всех для последнего в стриме. А после этого уже вытащить результат и сохранить. Но, в целом, упрощать код жертвуя его читаемостью не очень хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 19:29 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
Я-бы так не делал. По возможности. Код: java 1. 2. 3. 4. Концепция Streams предполагает аккуратную работу с аргументом. Без модификации экземпляра. Лучше конструировать новый объект. Или завести геттер кототрый решает задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 22:55 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
maytonЯ-бы так не делал. По возможности. Код: java 1. 2. 3. 4. Концепция Streams предполагает аккуратную работу с аргументом. Без модификации экземпляра. Лучше конструировать новый объект. Или завести геттер кототрый решает задачу. Спасибо. Это скорее пример для описания проблемы : У высесть объект вы его взяли из бд что то с ним сделали и хотите сохранить изменения обратно в базу ( например изменили возраст ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:04 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAtum1, не знаю, сработает ли, но можно попробовать вывести ссылку на CompletableFuture и залинковать их один на другого, чтобы join ждал себя+предыдущего и таким образом ждал всех для последнего в стриме. А после этого уже вытащить результат и сохранить. Но, в целом, упрощать код жертвуя его читаемостью не очень хорошо. А тут вопрос такой join будет сильно тормозить , Нудно посмотреть как реализован CompletableFuture.allOf(futures).join(); Что то интересно стало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:06 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
Atum1Спасибо. Это скорее пример для описания проблемы : У высесть объект вы его взяли из бд что то с ним сделали и хотите сохранить изменения обратно в базу ( например изменили возраст ) Блинн.. я старый базовик просто хватаюсь за голову видя такие синтетические постановки.. Тоесть то что можно сделать через Код: java 1. ты делаешь через пул потоков и конвейер операций? Дружище Атум. Давай я тебе буду придумывать задачи. И постараюсь даже поискать в них бизнес-value и здравый смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:14 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
maytonAtum1Спасибо. Это скорее пример для описания проблемы : У высесть объект вы его взяли из бд что то с ним сделали и хотите сохранить изменения обратно в базу ( например изменили возраст ) Блинн.. я старый базовик просто хватаюсь за голову видя такие синтетические постановки.. Тоесть то что можно сделать через Код: java 1. ты делаешь через пул потоков и конвейер операций? Дружище Атум. Давай я тебе буду придумывать задачи. И постараюсь даже поискать в них бизнес-value и здравый смысл. Спасибо :) Может к нам на работу придете ? Без шуток (Москва , офис , 200k+ ) ps еще раз - там конечно не Person - а более сложный объект . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 10:20 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
Нет уж спасибо. Не надо мне такого счастья. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 11:09 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
Atum1А тут вопрос такой join будет сильно тормозить , Нудно посмотреть как реализован CompletableFuture.allOf(futures).join(); С фига ли? Нет там никакой магии. Тормозить будет только если кто-то не может начать что-то делать пока ждет остальных. Но идея-то не в этом. Сначала нужно выполнить задачу, а потом уже ждать предыдущий future. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 11:21 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAtum1А тут вопрос такой join будет сильно тормозить , Нудно посмотреть как реализован CompletableFuture.allOf(futures).join(); С фига ли? Нет там никакой магии. Тормозить будет только если кто-то не может начать что-то делать пока ждет остальных. Но идея-то не в этом. Сначала нужно выполнить задачу, а потом уже ждать предыдущий future. эта идея ? .map(t->t.join()) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2018, 12:11 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2018, 12:12 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
Atum1, Хм. А оно и в простейшем случае будет работать нормально. Я было подумал что нет и нужно будет ухищрятся. А сегодня понимаю что и обычный join будет работать норм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2018, 12:20 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
maytonты делаешь через пул потоков и конвейер операций? непонятна постановка. Переименовывает ГУИ. Т.е. crud приложение. При сохранениии изменённого объекта с ФИО орм автоматом все видит и сохраняет. Про что топик то? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2018, 12:30 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
Atum1еще раз - там конечно не Person - а более сложный объект . Если вы сами не видете простой апдейт sql, вам нужен любой бд разработчик хотя бы для консультаций за 100к. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2018, 12:40 |
|
||
|
stream->map to completablefuture join all get object
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAtum1, Хм. А оно и в простейшем случае будет работать нормально. Я было подумал что нет и нужно будет ухищрятся. А сегодня понимаю что и обычный join будет работать норм. ок я понял . Всем спасибо . тему можно закрывать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2018, 18:54 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39615112&tid=2122176]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
147ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 486ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...