|
|
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
Не нашел поиском, не придумал как сформулировать. Вот есть у меня сервис который работает с базой, сохраняет, удаляет и тп. Я передаю ему объект для удаления, у которого есть предки. Значит я сначала должен удалить его из предка, сохранить предка и сохранить объект. И вот в момент сохранения возникает ошибка и откат транзакции. А сами объекты уже изменены. Как правильно реализуются такие вещи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 07:10 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
Stvan, делать всё в одной транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 08:22 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
Да, да, это понятно. Все в одной транзакции и все откатывается. То есть база не изменилась, но объекты то не откатываются. Надо как-то состояние запоминать и в случае отката восстанавливать. Чувствую, что где-то что-то не допонимаю. В базовых примерах такого не рассматривают, может кто ткнет носом в подходящую статейку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 09:18 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
Ну вот например, у меня есть дерево. Перетаскиваю элемент в другое место. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. И вот на последнем save выскакивает исключение, все откатывается, но в oldParent уже нет rockGroup. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 09:25 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
Stvan, в метод удаления передавать не объект, а идентификатор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 09:42 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
17-77, Погуглите memento pattern. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 09:47 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
Sherst, погуглил, и чего? зачем усложнять, если для удаления записи из БД достаточно знать ее идентификатор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 09:50 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
Дело не в удалении, а в том что у меня связанные объекты, и мне связи в программе надо поддерживать в актуальном состоянии. Тупо удалить я и по объекту могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 09:55 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
Stvan, Какие вы объекты собрались откатывать? Какой у них scope? Объясните. Сессийные? Так их не надо менять до комита транзакции. Request Scope? Так request, обычно, целиком откатывается, кроме случая вложеных транзакций. О каких объектах речь? Объектами связаными с базой вообще ORM занимается. Spring здесь при чем тогда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 09:56 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
StvanДело не в удалении, а в том что у меня связанные объекты, и мне связи в программе надо поддерживать в актуальном состоянии. Тупо удалить я и по объекту могу. Какие объекты? Что за объекты? Какой у них жизненый цикл\scope\области видимости? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 09:57 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
StvanДело не в удалении, а в том что у меня связанные объекты, и мне связи в программе надо поддерживать в актуальном состоянии. Тупо удалить я и по объекту могу. заметил принципиальное не понимание, итак 1. в первом вашем сообщение вы обозначили проблему удаления, чтобы это решить - вам достаточно сделать метод DeleteMyObject(int id), и в нем прописать запрос на удаление из БД. Если метод выдаст исключение, то вызывающая сторона получит сообщение об ошибке, но копия объекта у вызывающей стороны не изменится - проблема решена. В случае если ваш объект содержит вложенные и при удалении с ними тоже надо что-то сделать - для этого есть такая штука как каскадное обновление/удаление, реализуется либо через вашу СУБД, либо через вашу технологию доступа к данным (как именно - читайте документацию) 2. потом была обозначена проблема с перемещением в дереве, у вас сервис, значит есть потребитель, они могут быть на разных компьютерах, значит необходим канал передачи данных, например это xml через http, это автоматически означает, что при передачи объекта в метод move - на стороне сервиса создается копия объекта, и ее изменения никоим образом не влияют на копию, которая находится на вызывающей стороне - проблемы нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 10:11 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
Хорошие вопросы вы задаете господа :). Я тут только разобраться пока пытаюсь и многого не понимаю, а вы навалились. На спринге только сервисы и транзакции. Объекты обычные entity, не спринговые бины. Приложение десктопное на swing, база локальная. Объекты в деревьях и таблицах, вот там мне и надо отражать результаты перемещений и удалений. Пример изменения иерархии в дереве выше. Меня не конкретное решении интересует, а как это делается во взрослом приложении, шаблон. Поэтому не особо важно как там у меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 10:14 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
StvanХорошие вопросы вы задаете господа :). Я тут только разобраться пока пытаюсь и многого не понимаю, а вы навалились. На спринге только сервисы и транзакции. Объекты обычные entity, не спринговые бины. Приложение десктопное на swing, база локальная. Объекты в деревьях и таблицах, вот там мне и надо отражать результаты перемещений и удалений. Пример изменения иерархии в дереве выше. Меня не конкретное решении интересует, а как это делается во взрослом приложении, шаблон. Поэтому не особо важно как там у меня. С этого надо было начать. 2-tier. В этом случае при откате транзакции актуальное состояние просто перечитывается из БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 10:18 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВ этом случае при откате транзакции актуальное состояние просто перечитывается из БД Понятно, спасибо. Ожидал чего-то более эээ..., интелектуального :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 10:24 |
|
||
|
Spring Service и бизнес логика
|
|||
|---|---|---|---|
|
#18+
StvanПонятно, спасибо. Ожидал чего-то более эээ..., интелектуального :) Чем проще тем лучше. Так как процесс апдейта базы и так для юзера долгий, то добавить туда перечитывание не такая уж и проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 10:33 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=159&tid=2126553]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 404ms |

| 0 / 0 |
