powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate и бизнес-транзакции
10 сообщений из 10, страница 1 из 1
Hibernate и бизнес-транзакции
    #34795470
Guest1234567890
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поделитесь опытом, на чем реализуют бизнес транзакции в связке с хибернейтом. Простой пример, есть объект, у него set one-to-many, добавляю в коллекцию объекты, пытаюсь сохраниться. Сохранение не прошло, откатываю транзакцию БД, а как восстановить прежнее состояние объекта?
...
Рейтинг: 0 / 0
Hibernate и бизнес-транзакции
    #34795677
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гыы никак.
создать новую сессию выбрать их заново. если повезёт он будет в кэше

точнее: после такого пользоваться сессией нельзя. (в сессии есть entityentry в них есть начальное состояние на момент выборки)
ну и если обнаружен concurrencyexception то какой смысл возвращаться к начальному состоянию объекта? если эту версию ужо не закомитить?
...
Рейтинг: 0 / 0
Hibernate и бизнес-транзакции
    #34795686
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему новую сессию? Можно же вроде текущую форсировать на вычитку объекта из базы.
...
Рейтинг: 0 / 0
Hibernate и бизнес-транзакции
    #34795710
Guest1234567890
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
exppгыы никак.
создать новую сессию выбрать их заново. если повезёт он будет в кэше

точнее: после такого пользоваться сессией нельзя. (в сессии есть entityentry в них есть начальное состояние на момент выборки)
ну и если обнаружен concurrencyexception то какой смысл возвращаться к начальному состоянию объекта? если эту версию ужо не закомитить?

Я и спрашиваю, как это реализовывать, чтобы не изобретать велосипед :) Вот выбрал наивный пользователь из базы строку, поредактировал 20 полей в этой и других, относящейся к этой строке, ушел минут на 10 чайку попить. А в это время злодей взял и поменял в этой строке пару полей. Вернулся наивный пользователь к компу, а ему бац -- ексепшен так и сяк, вбивай данные по новой. Так не пойдет :)
...
Рейтинг: 0 / 0
Hibernate и бизнес-транзакции
    #34795717
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
где то было что сессией после exception'а пользоваться нельзя.
могу ошибаццо
...
Рейтинг: 0 / 0
Hibernate и бизнес-транзакции
    #34795722
Guest1234567890
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
exppгде то было что сессией после exception'а пользоваться нельзя.
могу ошибаццо
Сессия новая для сохранения, она вообще каждый раз новая.
...
Рейтинг: 0 / 0
Hibernate и бизнес-транзакции
    #34795782
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждый раз новая сессия не всегда хорошо.
Так а не понятно как именно ты хочешь разрулить ситуацию?
Вот есть пользователь, котрый поменял данные, но не смог сохранить - Optimistic Lock Exception
Данные которые он вбил все ещё могут жить в UI, это с хибером вообще никак не связано.
Тебе надо перечитать сосотяние из базы что навбивал другой пользователь? Или как ты хочешь разрулить?
...
Рейтинг: 0 / 0
Hibernate и бизнес-транзакции
    #34795798
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вооо в этом то и вопрос

подобное разруливание слишком специфично для каждого приложения. поэтому светит это велосипедом (в нормальном смысле).

что получится расскажи
...
Рейтинг: 0 / 0
Hibernate и бизнес-транзакции
    #34795931
Guest1234567890
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczКаждый раз новая сессия не всегда хорошо.
Так а не понятно как именно ты хочешь разрулить ситуацию?
Вот есть пользователь, котрый поменял данные, но не смог сохранить - Optimistic Lock Exception
Данные которые он вбил все ещё могут жить в UI, это с хибером вообще никак не связано.
Тебе надо перечитать сосотяние из базы что навбивал другой пользователь? Или как ты хочешь разрулить?

Каждый раз новая сессия -- необходимость. Приложение модульное, а коннекшнов на всех не хватит.

Чтобы разрулить ситуацию нужно в зависимости от ситуации предложить пользователю 1) посмотреть как данные сейчас выглядят в базе (здесь проблемы нет), 2) предложить принять изменения злодея и начать редактировать заново (тоже все ок), 3) предложить перезаписать изменения злодея, 4) померджить свои изменения с текущими.
Для п. 3 и 4 необходимо знать предыдущее состояние объекта.

А теперь более сложная ситуация -- никто строку не менял, просто умер коннекшн к базе во время обновления. Как теперь вообще откатиться в интерфейсе на старые значения не перечитывая объект?
...
Рейтинг: 0 / 0
Hibernate и бизнес-транзакции
    #34796843
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest1234567890Каждый раз новая сессия -- необходимость. Приложение модульное, а коннекшнов на всех не хватит.
Тогда нужно уточнять что такое "каждый раз". Какждый раз на бизнес транзакцию или каждый раз на операцию с БД?

Guest1234567890 3) предложить перезаписать изменения злодея
По-моему в той же сессии можно получить значение потенциального противника и затереть его своим. Там только надо смотреть как версии разруливаются.

Guest12345678904) померджить свои изменения с текущими.
Для п. 3 и 4 необходимо знать предыдущее состояние объекта.
Зачем? Нужно знать то что пользоователь хотел сохранить, это есть либо на UI, либо в бинах, перед сохранением. И знать что сейчас реально лижит в базе. Это можно получить из сессии, точно метод не помню. Что лежало в базе до изменений обоих пользователей уже никому не интересно.

Guest1234567890А теперь более сложная ситуация -- никто строку не менял, просто умер коннекшн к базе во время обновления. Как теперь вообще откатиться в интерфейсе на старые значения не перечитывая объект?
Это что-то вообще не ясно. Конекшн умудрился здохнуть во время короткой транзакции? Ну так это глобальный файлур. Чего с ним боротся? Данные которые пытались срхранить никуда не исчезли, а создать новое соединение и перечитать последнее состояние разве проблема?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate и бизнес-транзакции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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