|
Entity merge
|
|||
---|---|---|---|
#18+
Как лучше обновлять entity имеющие у себя дочерние связи? Вот например Person entity... При update Я получаю по id нужную мне entity, проставлю новые значение и сохраняю... Тут вопрос нет Вопрос если в Person entity есть поля например @OneToMany Set<BookEntity> books И когда приходит на обновление PersonDto , мне надо Какую-то BookEntity обновить, какую-то добавить, какую-то удалить... Грубо говоря смержить два листа Было б это в одном месте, я б написал в конвертере такую вещь Проблема в другом, когда мне передаётся вся иерархия PersonDto для обновления такое место не одно... Может есть какой-то подход, как правильно обновлять такие вещи PS пардон за форматирование, с телефона ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 23:02 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Как вижу я сейчас Писать метод, куда будет передаваться Set<Entity> , Set<Dto> и Converter<Entity, Dto> Далее 1 бегу по Set<Entity> и ищу Id в Set<Dto>, если нахожу то такие Entity надо обновить convert.update(entity, Dto) 2 если не нахожу, то такие Entity надо удалить 3 бегу по Set<Dto> если есть Dto с I'd null, то считаю , что это новые записи и их надо создать, converter. create(dto) И в итоге формирую уже конечный сет Но думаю, что уже кто-то делал подобное, может есть варианты проще) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 23:10 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Если на минутку забыть про Hibernate, у Book обязана быть ID? Иными словами: работаем ли мы с Book вне Person? Ссылается ли еще кто-то на Book кроме него, или может мы Book по ID запрашиваем отдельно? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 23:20 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Id это primary key из БД Да я могу получить Список всех книг определенного person Или определенную книги по ее Id Но вот обновлять надо все связке.. приходит PersonDTo ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 23:27 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Спрошу по-другому - могли бы мы вообще удалить колонку ID из таблицы BOOKS? Например, запросить все книги Person'a можно и без нее, для этого use case'a нам колонка ID не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 23:32 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, А можете немного развернуть свою мысль? Под конец дня немного голова не соображает Если тупо удалить, то нет не могу.. В entity надо поле, id... Чисто теоретически primary key book , может совпадать с primary key person... Книги будут уникальный для каждого человека Или вы подталкиваеете меня в SQL бд сделать nosql Хранить информацию о книгах в виде json напрмер ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 00:03 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Хранить книги в JSON колонке - тоже вариант. Но опять же - только если книги составляют композицию с человеком (человек определяет жизненный цикл книги и та не существует вне человека). Реляционный же подход в таком случае - это использовать таблицы без ID (в JPA это @ElementCollection - собсно у таких элементов нет ID). И ORM будет перезаписывать списки сам. Все сводится к тому чтоб удалить сначала все записи этого человека, а потом вставить все записи из обновленной коллекции. Т.к. на книгу больше никто не ссылается, то пересоздание записи не приводит к побочным эффектам. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 00:52 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, Попробовал я ElementCollection да отлично работает, Но Если BookEntity Содержит в себе OneToMany , то тут уже проблема начинается, @ Embeddable yне может содержать @Id ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 03:15 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Добавил два метода updateEntity Код: 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.
Которые уже или обновляют существующие entity если id совпало, или конвертируют их в новые ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 04:00 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=- Проблема в другом, когда мне передаётся вся иерархия PersonDto для обновления такое место не одно... Может есть какой-то подход, как правильно обновлять такие вещи При REST таких случаев возникать не должно. Напр Http://sql.ru/app/person/345 Передаем персоне список книг. Дальше? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 07:06 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev человек определяет жизненный цикл книги и та не существует вне человека). Существует ли сущность книга отдельно? А то куда то в сторону повел про встроенные книги в человеке) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 07:09 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=- Какую-то BookEntity обновить, какую-то добавить, какую-то удалить... Грубо говоря смержить два листа По REST merge делает клиент. Он делает delete и передает список УДАЛЯЕМЫХ книг. Тупо, просто и гениально)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 07:13 |
|
Entity merge
|
|||
---|---|---|---|
#18+
В данном случае передается объект Person Новым списком кнмг ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 07:41 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=- В данном случае передается объект Person Новым списком кнмг Говори еще яснее. На урл Http://sql.ru/app/person/345 Передается персона с айди 346? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 08:26 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=-, API на бэке проектируешь ты? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 08:27 |
|
Entity merge
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Да все верно Http://sql.ru/app/person/345 Передается иерахические данные по персону ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 09:02 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=-, Блин, да что верно то? Айди совпадает? Модификаторы CRUD отпавляем? Если отправляем по стандарту рест, тогда ты отправляешь при добавить только новые книги. Если не отправляем, тогда ты можешь тупо удалить все что в бд и записать новое состояние книг персоны. Ферштейн? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 09:14 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=-, Иерархию поканаблюдаю всего два уровня человек - > книги ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 09:18 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=-, При рест у тебя API addBook(id, person) delBook(id, person) updateBook( Причем, класс персон можно не слать. При желании. Ты вероятно пытаешься сделать метод возьмуЧтоУгодно(барахло) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 09:21 |
|
Entity merge
|
|||
---|---|---|---|
#18+
вся проблема в том, что отталкивается от кода, а не от структуры данных. если б нарисовал на бумажке все связи меж таблиц - не было б вопросов ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 10:00 |
|
Entity merge
|
|||
---|---|---|---|
#18+
вадя, Увы. Молодое поколение уже не исправить. С другой стороны тут случай детский - Персона и его книги))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 10:22 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 10:27 |
|
Entity merge
|
|||
---|---|---|---|
#18+
вадя, Кстати, я и в бд MERGE редко использовал. Достаточно специфическая команда. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 10:41 |
|
Entity merge
|
|||
---|---|---|---|
#18+
На фронте открывает форма редактировать Добавляются все новые поля и отправляется все одним махом Книги , машины, данные персоны итд... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 08:49 |
|
Entity merge
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Под merge я имел в виду смержить два листа в ручную, если нет чего из коробки ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 08:50 |
|
Entity merge
|
|||
---|---|---|---|
#18+
[quot PetroNotC Sharp#22410329]вадя, Увы. Молодое поколение уже не исправить. С другой стороны тут случай детский - Персона и его книги)))[/quot Я надеюсь это сарказм был Что персона и книги это только всего лишь пример был, думаю понятно ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 08:52 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=- На фронте открывает форма редактировать Добавляются все новые поля и отправляется все одним махом когда надёжнее по мере заполнения полей? поле заполнил - отправил- сохранил в базе? можно в любое время прерваться, данные не пропадут. система простейший crud. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 09:12 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=- На фронте открывает форма редактировать Добавляются все новые поля и отправляется все одним махом Книги , машины, данные персоны итд... ЭТО ПОНЯТНО? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 09:44 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=-, Какой сарказм? Ты по факту сделал бд на клиенте. Собираешь, собираешь и потом оправляешь новую бд. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 09:46 |
|
Entity merge
|
|||
---|---|---|---|
#18+
вадя, Можно и не поле а сущность. Главное не базу)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 09:47 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=- Книги , машины, данные персоны итд... Если вася с деревни правил книги, пока ты правил машины - разгребать общий доступ к ресурсам как.? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 09:55 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Поэтому вопросы в данном треде детские. Без обид. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 09:57 |
|
Entity merge
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Можно и не поле а сущность. Главное не базу)))) потому как после заполнения поля можно сохранить эти данные сразу в базу минуя объекты в приложении. даже если сохранять несколько полей. тогда не будет проблем с entity... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 11:54 |
|
Entity merge
|
|||
---|---|---|---|
#18+
вадя, Ты узко смотришь. Пока будешь писать поле длинна хрена у мужика, сосед вася сделает мужика бабой. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 12:19 |
|
Entity merge
|
|||
---|---|---|---|
#18+
вадя минуя объекты в приложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 12:21 |
|
Entity merge
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Пока будешь писать поле длинна хрена у мужика, сосед вася сделает мужика бабой. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 12:51 |
|
Entity merge
|
|||
---|---|---|---|
#18+
вадя -=Koba=- На фронте открывает форма редактировать Добавляются все новые поля и отправляется все одним махом когда надёжнее по мере заполнения полей? поле заполнил - отправил- сохранил в базе? можно в любое время прерваться, данные не пропадут. система простейший crud. Сделано так форма... Да можно передалть апи, и фронт будет отправлять кучу запросов, мне конечно проще будет, НО если что отвалится, как потом поддерживать консистентность данных ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 13:27 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Я бы только за был если Заходим в персона редактируем и отправляем его Заходим в книги и та редактируем и отправляем итд Но сейчас вся ДТО отправляется в момент закрытия модального окна, по кнопке сохранить ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 13:29 |
|
Entity merge
|
|||
---|---|---|---|
#18+
вадя PetroNotC Sharp Пока будешь писать поле длинна хрена у мужика, сосед вася сделает мужика бабой. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 13:30 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=- консистентность данных Опиши юз кейс одновременного редактирования и и страшногт слова "консистентность" ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 13:31 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=- Я бы только за был если Заходим в персона редактируем и отправляем его Заходим в книги и та редактируем и отправляем итд Но сейчас вся ДТО отправляется в момент закрытия модального окна, по кнопке сохранить ССЗБ — аббревиатура, образованная по первым буквам фразы «сам себе злобный буратино», используется для обозначения человека, который собственными же действиями сделал себе неприятность. Кащенитская расшифровка — «сам себе злобный боклан». ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 13:33 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=- как потом поддерживать консистентность данных ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 17:35 |
|
Entity merge
|
|||
---|---|---|---|
#18+
PetroNotC Sharp вадя, Ты узко смотришь. Пока будешь писать поле длинна хрена у мужика, сосед вася сделает мужика бабой. Если не гонять по вебу сущности а гонять команды (типа шаблон command) или CQRS то тогда безразлично была ли баба мужиком. Просто какая-то команда будет неприменима. Ну и да. Консистентности не будет. Да и не везде нужна эта консистентность. Я вот когда телефон пополняю - не вижу в сервисах пополнения аж вообще никакой консистентности. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 18:40 |
|
Entity merge
|
|||
---|---|---|---|
#18+
mayton Ну и да. Консистентности не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 18:53 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Ну.. в CQRS-ах трудно получить "состояние" системы. Впрочем.. не обращай внимание сильно. Это я фантазирую. Кобе это делать не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 19:08 |
|
Entity merge
|
|||
---|---|---|---|
#18+
mayton, Ты прав. Но у меня аллергия на CQRS. Как на микросервисы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 19:35 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Для меня микросервисы чаще были представлены как AWS-Lambda или Spring Functions завернутые в ту-же lambda. Вот чистого правильного микросервиса я как-то ни разу не встречал. Зато монолитов вокруг мена разбросано ой-ой. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 23:37 |
|
Entity merge
|
|||
---|---|---|---|
#18+
mayton, Да что про микросервисы. Правильный рест то знают единицы. А архитектурная задумка гениальна. Разделить фронт и бэк чтобы не перетягивали одеяло кто важнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 10:31 |
|
Entity merge
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Разделить фронт и бэк чтобы не перетягивали одеяло кто важнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 12:36 |
|
Entity merge
|
|||
---|---|---|---|
#18+
вадя PetroNotC Sharp Разделить фронт и бэк чтобы не перетягивали одеяло кто важнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 13:23 |
|
Entity merge
|
|||
---|---|---|---|
#18+
-=Koba=- Может есть какой-то подход, как правильно обновлять такие вещи PS пардон за форматирование, с телефона есть понятие каскадных операций они могут быть раного вида например Merge,Persist и тд тоесть на любой вкус можно настроить то что тебе нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 16:15 |
|
Entity merge
|
|||
---|---|---|---|
#18+
PetroNotC Sharp вадя пропущено... главное правильно разделить - вот в чём проблема Ага помучившись с REST, щас двигают GraphQL. <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:14 |
|
Entity merge
|
|||
---|---|---|---|
#18+
PetroNotC Sharp вадя пропущено... главное правильно разделить - вот в чём проблема REST к сожалению так и не оформился как протокол. Он остался архитектурным паттерном или рекомендацией. Грубо говоря ты можешь пройти сертификацию GraphQL или SOAP но совершенно невозможно точно сказать что у тебя REST. Вобщем REST это как демократия и толерантность. Все о ней говорят но никто точно не может установить границ. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:21 |
|
Entity merge
|
|||
---|---|---|---|
#18+
mayton, Значит ты не понял его суть. Это правила хорошего API. Если ты сделал себе класс с одним методом всё в куче, то это какой паттерн? А нужно разбить урл на сущности. Только и всего. Не вали все в кучу какой паттерн? Чтобы кучу а ля xml потом передать на бэк? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:30 |
|
Entity merge
|
|||
---|---|---|---|
#18+
mad_nazgul, Ни одного тут не видел мучающегося. А вот на микросервисы могу доказать ссылками на посты ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 17:31 |
|
Entity merge
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Значит ты не понял его суть. Это правила хорошего API. Если ты сделал себе класс с одним методом всё в куче, то это какой паттерн? А нужно разбить урл на сущности. Только и всего. Не вали все в кучу какой паттерн? Чтобы кучу а ля xml потом передать на бэк? При чем тут я понял или не понял? Меня здесь вообще нет. Есть протокол. И есть стандарт. REST-а рядом не стояло. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 18:07 |
|
Entity merge
|
|||
---|---|---|---|
#18+
mayton, Есть много понятий. Как вам это, илон маск? https://www.google.com/search?q=парадигма программирования&oq=парадигма&aqs=chrome.4.69i57j0i433i512j0i512l3j46i175i199i512j0i512l2.5710j1j8&client=tablet-android-huawei&sourceid=chrome-mobile&ie=UTF-8 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 18:31 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Хорошо. Пускай будет парадигма. Вадя спросил про разделение. Ты сказал - дели по REST. Тоесть дели, следуя парадигме. Как-бы сказал мой учитель математики - условие необходимое но недостаточное. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 18:59 |
|
Entity merge
|
|||
---|---|---|---|
#18+
mayton, Да 6 принципов. Но не догм! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 19:05 |
|
Entity merge
|
|||
---|---|---|---|
#18+
mayton, https://venel.me/post/173206282525/rest-6-principles-architectural-constraints Кстати, HATEOAS уже есть в спринг буте ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 19:10 |
|
Entity merge
|
|||
---|---|---|---|
#18+
Не хочу спорить по пустякам. Да и тема не особо интересна. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 19:13 |
|
Entity merge
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mad_nazgul, Ни одного тут не видел мучающегося. А вот на микросервисы могу доказать ссылками на посты Они есть. REST это как Agile. Каждый понимает по своему :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2021, 19:18 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120280]: |
0ms |
get settings: |
3ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
78ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
988ms |
get tp. blocked users: |
0ms |
others: | 348ms |
total: | 1429ms |
0 / 0 |