|
|
|
Как правильно удалить данные
|
|||
|---|---|---|---|
|
#18+
Есть объект класса Код: java 1. в нем находится коллекция заказов: Код: java 1. 2. 3. 4. 5. 6. 7. допустим я удаляю из коллекции Код: java 1. пару элементов (без удаления из базы), далее вставляю коллекцию обратно в Код: java 1. , т.е. Код: java 1. и вызываю Код: java 1. . Вопрос, что при этом произойдет? При таком варианте удалятся ли автоматически из базы те заказы, которые я удалила из коллекции, или нужно делать по-другому: сначала удаляем элементы коллекции и из базы и уже после обновляем Код: java 1. . Подскажите, пожалуйста, как правильно? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2013, 12:04:05 |
|
||
|
Как правильно удалить данные
|
|||
|---|---|---|---|
|
#18+
JulT, чисто академический вопрос? Т.к. - "уходя - уходи", а "удаляя - удаляй". Поэтому фраза: автордалее вставляю коллекцию обратно в вставляем новые элементы? Делай логично в объектной модели, тогда ОРМ разберётся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2013, 12:14:29 |
|
||
|
Как правильно удалить данные
|
|||
|---|---|---|---|
|
#18+
Petro123JulT, чисто академический вопрос? Т.к. - "уходя - уходи", а "удаляя - удаляй". Поэтому фраза: автордалее вставляю коллекцию обратно в вставляем новые элементы? Делай логично в объектной модели, тогда ОРМ разберётся. пользователь открывает счет, в нем лежат заказы, он удалил пару заказов в окошке, потом закрыл окно без сохранения проделанных операций. если я сразу реализую удаление заказов из базы, то при следующем открытия окна у пользователя не будет возможности их увидеть, а ведь он не сохранил свои действия, т.е. они должны быть. как в таком случае поступить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2013, 12:39:12 |
|
||
|
Как правильно удалить данные
|
|||
|---|---|---|---|
|
#18+
JulT, web или толстый клиент? Когда юзер заходит куда-то что он может отменить, то нужно сохранять текущее состояние, чтобы потом можно было откатить его после изменений до изначального. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2013, 13:15:22 |
|
||
|
Как правильно удалить данные
|
|||
|---|---|---|---|
|
#18+
BlazkowiczJulT, web или толстый клиент? Когда юзер заходит куда-то что он может отменить, то нужно сохранять текущее состояние, чтобы потом можно было откатить его после изменений до изначального. клиент толстый. т.е. получается так: он зашел, кое-что удалил (при этом я сразу же удалила это из базы), удаленные объекты сохраняю во временный ArrayList (например). далее, юзер закрывает окно, при этом не сохраняя свои действия, я беру временный ArrayList и вставляю его заново в базу, правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2013, 13:22:12 |
|
||
|
Как правильно удалить данные
|
|||
|---|---|---|---|
|
#18+
JulT, Нужно помнить, что у вас не один юзверь, а несколько ОДНОВРЕМЕННО правят данные. Значит, перед правкой выбираем по бизнесу: - логические блокировки - физические - короткие транзакции без отмены. Последний вариант проще и надёжнее. Логические требуют извещать что "Пользователь взял на редактирование" Физические требуют длинной транзакции и коммит на кнопку Сохранить (нет ОРМ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2013, 13:49:31 |
|
||
|
Как правильно удалить данные
|
|||
|---|---|---|---|
|
#18+
JulTу пользователя не будет возможности их увидеть Удаляя - удаляй. Зачем их видеть снова? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2013, 13:51:10 |
|
||
|
Как правильно удалить данные
|
|||
|---|---|---|---|
|
#18+
JulTт.е. получается так: он зашел, кое-что удалил (при этом я сразу же удалила это из базы), удаленные объекты сохраняю во временный ArrayList (например). далее, юзер закрывает окно, при этом не сохраняя свои действия, я беру временный ArrayList и вставляю его заново в базу, правильно? Как сделано у нас. Юзер заходит - состояние сериализуется в byte[]. Юзер удаляет\редактирует - делает что хочет. Вышел без сохранения или нажал Abort - состояние восстановилось из byte[]. Сохранил - объекты уехали на сервер и там сохранились изменения и удалились удаленные. Удаление - тонкий момент. Да. Если это единичная сущность. Так кнопка [Delete] для неё отдельная и работает аналогично [Save] без возможности откатить. А вот если сущность является элементом списка, то тут приходят на помощь Hibernate Persistent Collections. Они внутри себя хранят snapshot элементов, какими они были во время загрузки. При сохранении такой коллекции хибернейт сравнивает текущее содержимое коллеции и snapshot. Таким образом находит удаленные сущности и удаляет их в базе. Если нет возможности протащить Hibernate на клиента, то нужно выдумывать что-то своё аналогичное. Сохранять сразу в базу, при том что вы возможно захотите откатить изменения не очень логично. В двух-звенке можно попробовать подобное реализовать на вложеных транзакциях с комитами и откатами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2013, 14:24:12 |
|
||
|
Как правильно удалить данные
|
|||
|---|---|---|---|
|
#18+
BlazkowiczJulTт.е. получается так: он зашел, кое-что удалил (при этом я сразу же удалила это из базы), удаленные объекты сохраняю во временный ArrayList (например). далее, юзер закрывает окно, при этом не сохраняя свои действия, я беру временный ArrayList и вставляю его заново в базу, правильно? Как сделано у нас. Юзер заходит - состояние сериализуется в byte[]. Юзер удаляет\редактирует - делает что хочет. Вышел без сохранения или нажал Abort - состояние восстановилось из byte[]. Сохранил - объекты уехали на сервер и там сохранились изменения и удалились удаленные. Удаление - тонкий момент. Да. Если это единичная сущность. Так кнопка [Delete] для неё отдельная и работает аналогично [Save] без возможности откатить. А вот если сущность является элементом списка, то тут приходят на помощь Hibernate Persistent Collections. Они внутри себя хранят snapshot элементов, какими они были во время загрузки. При сохранении такой коллекции хибернейт сравнивает текущее содержимое коллеции и snapshot. Таким образом находит удаленные сущности и удаляет их в базе. Если нет возможности протащить Hibernate на клиента, то нужно выдумывать что-то своё аналогичное. Сохранять сразу в базу, при том что вы возможно захотите откатить изменения не очень логично. В двух-звенке можно попробовать подобное реализовать на вложеных транзакциях с комитами и откатами. Спасибо большущее за столь развернутый ответ. Буду думать и спрашивать дальше:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2013, 01:00:26 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38116346&tid=2130158]: |
0ms |
get settings: |
12ms |
get forum list: |
22ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 281ms |
| total: | 450ms |

| 0 / 0 |
