powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно удалить данные
9 сообщений из 9, страница 1 из 1
Как правильно удалить данные
    #38116265
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть объект класса
Код: java
1.
Schet sc=new Schet();


в нем находится коллекция заказов:
Код: java
1.
2.
3.
4.
5.
6.
7.
public Collection<Zakaz> getZakazCollection() {
        return zakazCollection;
    }

    public void setZakazCollection(Collection<Zakaz> zakazCollection) {
        this.zakazCollection = zakazCollection;
    }


допустим я удаляю из коллекции
Код: java
1.
zakazCollection

пару элементов (без удаления из базы), далее вставляю коллекцию обратно в
Код: java
1.
sc

, т.е.
Код: java
1.
sc.setZakazCollection(zakazCollectionAfterDelete) 

и вызываю
Код: java
1.
manager.merge(sc)

. Вопрос, что при этом произойдет? При таком варианте удалятся ли автоматически из базы те заказы, которые я удалила из коллекции, или нужно делать по-другому: сначала удаляем элементы коллекции и из базы и уже после обновляем
Код: java
1.
sc

. Подскажите, пожалуйста, как правильно? Спасибо.
...
Рейтинг: 0 / 0
Как правильно удалить данные
    #38116270
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulT,
чисто академический вопрос?
Т.к. - "уходя - уходи", а "удаляя - удаляй".
Поэтому фраза:
автордалее вставляю коллекцию обратно в
вставляем новые элементы? Делай логично в объектной модели, тогда ОРМ разберётся.
...
Рейтинг: 0 / 0
Как правильно удалить данные
    #38116289
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123JulT,
чисто академический вопрос?
Т.к. - "уходя - уходи", а "удаляя - удаляй".
Поэтому фраза:
автордалее вставляю коллекцию обратно в
вставляем новые элементы? Делай логично в объектной модели, тогда ОРМ разберётся.
пользователь открывает счет, в нем лежат заказы, он удалил пару заказов в окошке, потом закрыл окно без сохранения проделанных операций. если я сразу реализую удаление заказов
из базы, то при следующем открытия окна у пользователя не будет возможности их увидеть, а ведь он не сохранил свои действия, т.е. они должны быть. как в таком случае поступить?
...
Рейтинг: 0 / 0
Как правильно удалить данные
    #38116304
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulT, web или толстый клиент?
Когда юзер заходит куда-то что он может отменить, то нужно сохранять текущее состояние, чтобы потом можно было откатить его после изменений до изначального.
...
Рейтинг: 0 / 0
Как правильно удалить данные
    #38116307
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczJulT, web или толстый клиент?
Когда юзер заходит куда-то что он может отменить, то нужно сохранять текущее состояние, чтобы потом можно было откатить его после изменений до изначального.
клиент толстый.
т.е. получается так: он зашел, кое-что удалил (при этом я сразу же удалила это из базы), удаленные объекты сохраняю во временный ArrayList (например). далее, юзер закрывает окно, при этом не сохраняя свои действия, я беру временный ArrayList и вставляю его заново в базу, правильно?
...
Рейтинг: 0 / 0
Как правильно удалить данные
    #38116323
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulT,
Нужно помнить, что у вас не один юзверь, а несколько ОДНОВРЕМЕННО правят данные.
Значит, перед правкой выбираем по бизнесу:
- логические блокировки
- физические
- короткие транзакции без отмены.
Последний вариант проще и надёжнее.
Логические требуют извещать что "Пользователь взял на редактирование"
Физические требуют длинной транзакции и коммит на кнопку Сохранить (нет ОРМ)
...
Рейтинг: 0 / 0
Как правильно удалить данные
    #38116326
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTу пользователя не будет возможности их увидеть
Удаляя - удаляй. Зачем их видеть снова?
...
Рейтинг: 0 / 0
Как правильно удалить данные
    #38116346
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTт.е. получается так: он зашел, кое-что удалил (при этом я сразу же удалила это из базы), удаленные объекты сохраняю во временный ArrayList (например). далее, юзер закрывает окно, при этом не сохраняя свои действия, я беру временный ArrayList и вставляю его заново в базу, правильно?
Как сделано у нас.
Юзер заходит - состояние сериализуется в byte[].
Юзер удаляет\редактирует - делает что хочет.
Вышел без сохранения или нажал Abort - состояние восстановилось из byte[].
Сохранил - объекты уехали на сервер и там сохранились изменения и удалились удаленные.

Удаление - тонкий момент. Да. Если это единичная сущность. Так кнопка [Delete] для неё отдельная и работает аналогично [Save] без возможности откатить.
А вот если сущность является элементом списка, то тут приходят на помощь Hibernate Persistent Collections. Они внутри себя хранят snapshot элементов, какими они были во время загрузки. При сохранении такой коллекции хибернейт сравнивает текущее содержимое коллеции и snapshot. Таким образом находит удаленные сущности и удаляет их в базе.

Если нет возможности протащить Hibernate на клиента, то нужно выдумывать что-то своё аналогичное. Сохранять сразу в базу, при том что вы возможно захотите откатить изменения не очень логично.

В двух-звенке можно попробовать подобное реализовать на вложеных транзакциях с комитами и откатами.
...
Рейтинг: 0 / 0
Как правильно удалить данные
    #38116681
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczJulTт.е. получается так: он зашел, кое-что удалил (при этом я сразу же удалила это из базы), удаленные объекты сохраняю во временный ArrayList (например). далее, юзер закрывает окно, при этом не сохраняя свои действия, я беру временный ArrayList и вставляю его заново в базу, правильно?
Как сделано у нас.
Юзер заходит - состояние сериализуется в byte[].
Юзер удаляет\редактирует - делает что хочет.
Вышел без сохранения или нажал Abort - состояние восстановилось из byte[].
Сохранил - объекты уехали на сервер и там сохранились изменения и удалились удаленные.

Удаление - тонкий момент. Да. Если это единичная сущность. Так кнопка [Delete] для неё отдельная и работает аналогично [Save] без возможности откатить.
А вот если сущность является элементом списка, то тут приходят на помощь Hibernate Persistent Collections. Они внутри себя хранят snapshot элементов, какими они были во время загрузки. При сохранении такой коллекции хибернейт сравнивает текущее содержимое коллеции и snapshot. Таким образом находит удаленные сущности и удаляет их в базе.

Если нет возможности протащить Hibernate на клиента, то нужно выдумывать что-то своё аналогичное. Сохранять сразу в базу, при том что вы возможно захотите откатить изменения не очень логично.

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


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