Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Spring транзакции 
:(
    Опции темы
wertklop
Дата 4.11.2013, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.9.2008

Репутация: нет
Всего: нет



Всем добрый день.

Имеется ситуация:
метод выполняет расчеты, попутно обращаясь к БД, в результате пишет данные в разные таблицы БД посредством метода save().

Вопрос: есть ли возможность сделать так, чтобы если хотя бы одна запись в БД не прошла, то и остальные предыдущие успешные записи откатились? Подойдет ли @Transactional для метода к моей ситуации?
PM MAIL   Вверх
Stolzen
Дата 4.11.2013, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



Для обращения к БД используете hibernate или что-то другое?

Это сообщение отредактировал(а) Stolzen - 4.11.2013, 19:42


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
wertklop
Дата 4.11.2013, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.9.2008

Репутация: нет
Всего: нет



да, hibernate
PM MAIL   Вверх
Stolzen
Дата 4.11.2013, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 23
Всего: 48



Hibernate, если мне не изменяет память, использует паттерн UnitOfWork (там это называется Session). Т.е. все изменения, вносимые в сессию, постепенно накапливаются и попадают в базу только после коммита.

А это значит, что вы должны делать коммит только по успешному завершению сохранения всех данных. Аннотация @Transactional в спринге должна это сделать за вас, если во время выполнения не было выброшено никаких исключений. Следовательно, если по вашему мнению что-то пошло не так, выбрасывайте исключение (не помню правда нужно ли там какое-то особое исключение или любое сойдет), и спринг должен позаботиться обо всем. 



Это сообщение отредактировал(а) Stolzen - 4.11.2013, 20:09


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Farmazon
Дата 12.11.2013, 03:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Разработчик
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 7.7.2006

Репутация: 1
Всего: 5



wertklop, подойдёт, если используешь декларативное управление транзакциями. 

Метод save вызывать не надо, хибернейт сам измененные сущности обновит в базе при успешном завершении транзакции (успешное выход из метода с @Transactional). Чтоб транзакция успешно не завершилась, достаточно выкинуть любое исключение.


--------------------
Таково моё общее мнение.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0955 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.