powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Кто ответственен за хранение новых и старых значений до подтверждении транзакции
15 сообщений из 15, страница 1 из 1
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35676796
Antoshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, форумчане!

Не знал, куда запостить вопрос, попробую здесь. Допустим у меня есть классы бизнес-логики наподобие:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
class Person
{
  private string firstName;
  private string lastName;

  public string FirstName { get { return firstName; } set { this.firstName = value;} }
  public string LastName { get { return lastName; } set { this.lastName = value;} }
}

Допустим, что для ранее загруженного объекта я поменял фамилию. Но на этапе сохранения данных в БД произошла ошибка СУБД (констрейнт или ещё что-либо, в данном контексте это не важно). Было принято решение откатить транзакцию. Но есть одна загвоздка: старой фамилию уже нет. Очевидно, что для обхода данной проблемы необходимо где-то хранить старые данные до подтверждения бизнес-транзакции. И где это хранить? Не хочется хранить в классах БЛ, так как это приведёт к неоправданному усложнению последних. У кого какие мысли есть?
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35676869
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у Вашего объекта должно быть еще поле хранения первичного ключа записи данных. При ошибки изменения данных объект должен перечитать запись в базе

С уважением, Naf
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35676976
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antoshka
Было принято решение откатить транзакцию. Но есть одна загвоздка: старой фамилию уже нет. Очевидно, что для обхода данной проблемы необходимо где-то хранить старые данные до
не понял проблемы.
- откатывает транзакцию СУБД
- если ошибка в субд, то никакие твои телодвижения и старые значения не нужны (они в СУБД)
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35676994
Antoshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nafу Вашего объекта должно быть еще поле хранения первичного ключа записи данных. При ошибки изменения данных объект должен перечитать запись в базе

А если объектов много, не дороговат ли будет такой откат транзакции? Неужели в случае ошибки всё перечитывать из БД?
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35677011
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntoshkaNafу Вашего объекта должно быть еще поле хранения первичного ключа записи данных. При ошибки изменения данных объект должен перечитать запись в базе

А если объектов много, не дороговат ли будет такой откат транзакции? Неужели в случае ошибки всё перечитывать из БД?
Еще дороже устравить откат транзакции своими средствами
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35677146
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntoshkaУ кого какие мысли есть?Перечитать Фаулера - он на эту тему распространялся.
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35677762
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antoshka пишет:
Но есть одна загвоздка: старой фамилию уже нет.

Если вы откатите транзакцию, то она будет.

> Очевидно, что для обхода данной проблемы необходимо где-то хранить
> старые данные до подтверждения бизнес-транзакции.

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

И где это хранить? Не
> хочется хранить в классах БЛ, так как это приведёт к неоправданному

Ну это было бы вообще смешно - для подтверждения одних транзакций
вы храните данные в базе данных, для чего делаете новые транзакции,
а где тогда хранить данны для подтверждения последних ?

Может быть вы перешли бы с чисто теоретического уровня на
сугубо практический, тогда бы вам быстрее подсказали, как это
делать ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35677766
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely пишет:

> Перечитать Фаулера - он на эту тему распространялся.

Не подскажете, где конкретно ? в какой книге хотя бы ?
Я бы почитал.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35677900
anonimouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
О! Классный вопрос..

Бизнес объекты для работы механизма транзаций кешируются. Причем кешей может быть два и больше:

1. Глобальный кеш, общий для всех процессов Application сервера
2. Локальный кеш, принадлежащий клиентскому процессу

При получении объекта на чтение - дается ссылка на объект в глобальном кеше
При получении объекта на запись - объект копируется в локальный кеш, клиенту дается
ссылка на объект локального кеша, объект в глобальном кеше блокируется на запись для других
клиентов (обычно).

Т.О. транзационность может быть реализована механизмами кеширования
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35677906
anonimouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
етить.. столько писал - куда нафиг делось???...

Короче - ищите Фаулера в электронном виде.
Если чего не понятно - разжую.
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35678204
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anonimouse
Бизнес объекты для работы механизма транзаций кешируются. Причем кешей может быть два и больше:
вы забыли указать - для "n-звенок"
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35678275
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Bely пишет:

> Перечитать Фаулера - он на эту тему распространялся.

Не подскажете, где конкретно ? в какой книге хотя бы ?
Я бы почитал.


"Архитектура корпоративных программных приложений"
ИСПРАВЛЕННОЕ ИЗДАНИЕ
Мартин Фаулер

(при участии
Дейвида Раиса, Мэттыо Фоммела,
Эдварда Хайета, Роберта Ми и Рэнди
Стаффорда)

Издательский дом Вильямс
Москва • Санкт-Петербург • Киев
2006
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35678285
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anonimouseетить.. столько писал - куда нафиг делось???...

"Ктулху зохавал" :)

anonimouse
Короче - ищите Фаулера в электронном виде.
anonimouse
+1 однозначно


Если чего не понятно - разжую.

Там всё понятно - если читать меееедленно и три раза без отрыва от производства. Тьфу, от практики то бишь :)
+ там же куча ссылок на книги для более любопытных к деталям товарищей
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35679902
anonimouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quote]Там всё понятно - если читать меееедленно[/quote]

Именно. "Архитектура корпоративных.." содержит больше скрытых
проблем, чем освещает. Фаулера читать нужно именно как
отправную точку. Ценность этой книги в том, что она содержит
структурированную информацию об основных пробемах.

Что касается транзационности через кеширование -
обращаю внимание на наличие следующих моментов:

а. Параллельные внутрисессиионные транзакции.
б. Вложеные внутрисессиионные транзакции.
с. Пересекающиется внутрисессиионные транзакции.

Теперь добавляем межсессионные транзакции...

надеюсь понятна завлекательность темы? :)
...
Рейтинг: 0 / 0
Кто ответственен за хранение новых и старых значений до подтверждении транзакции
    #35682921
Bладимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antoshka
Допустим, что для ранее загруженного объекта я поменял фамилию. Но на этапе сохранения данных в БД произошла ошибка СУБД (констрейнт или ещё что-либо, в данном контексте это не важно). Было принято решение откатить транзакцию. Но есть одна загвоздка: старой фамилию уже нет. Очевидно, что для обхода данной проблемы необходимо где-то хранить старые данные до подтверждения бизнес-транзакции. И где это хранить? Не хочется хранить в классах БЛ, так как это приведёт к неоправданному усложнению последних. У кого какие мысли есть?
Нет описания именно проблемы . В зависимости от того откуда беруться новые значения и что Вы планируете делать дальше зависит и где хранить первоначальные значения и хранить ли их вообще.
Например, если у вас 3х-звенка и между UI и business layer ходят DTO, то просто выкидываете все бизнес-обьекты и кидаете ошибку. UI потом пришлет новые DTO, а business layer подгрузит страые объекты из базы. Достаточно просто и дешево (по сравнению с остальными затратами на такую модель).
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Кто ответственен за хранение новых и старых значений до подтверждении транзакции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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