![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Asal |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 26.12.2006 Где: Минск Репутация: 4 Всего: 7 |
Возник вопрос аналогичный вопросу из сереала.
где же открывать транзакцию и делать commiy() ? Принцип почти такой же как и у Infinite из сереала. Сначало инициализируется класс Controller
В классе Controller инициализурую менеджеров
В Registry хранятся менеджеры
А уже в менеджерах выполню функции insert/update/delete
Друзья помогите решить задачу. Где открывать транзакцию? Исходный код во вложении. Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() |
||||||||
|
|||||||||
ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 32 Всего: 81 |
||||
|
||||
mbasil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
О чем вопрос? Вы уже и открываете, и закрываете следующими вызовами:
По сути у Вас каждая транзакция состоит из одной операции в одном методе. Это сообщение отредактировал(а) mbasil - 21.8.2008, 19:33 |
|||
|
||||
Asal |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 26.12.2006 Где: Минск Репутация: 4 Всего: 7 |
Тем кто читал сериал я думаю будет более или менее понятно о чем речь. А для тех кто не читал попытаюсь объяснить. Допустим на страничке мы пытаемся изменить данные юзера, делаем запрос. В классе UserController обрабатываем этот запрос
В классе UserManager обновляем в базе
Если приходит только один запрос, то все нормально, но когда одну запись о юзере пытаются поменять сразу двое (и более), возникает проблема... И начинают сыпаться разного рода ошибки например
Вот и вопрос где, как, когда открывать транзакции, делать commit и т.д. P.S. здесь мне посоветовали почитать книгу Мартина Фаулера "Архитектура корпоративных программных приложений". Там по-моему глава есть про Web приложения. |
||||||||
|
|||||||||
ivg |
|
|||
![]() Autonomous R&D ![]() ![]() Профиль Группа: Участник Сообщений: 686 Регистрация: 8.2.2006 Где: Екатеринбург Репутация: 32 Всего: 81 |
Проблема не в транзакциях, а в расшареном между потоками javax.persistence.EntityManager
Это сообщение отредактировал(а) ivg - 21.8.2008, 20:23 |
|||
|
||||
Asal |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 26.12.2006 Где: Минск Репутация: 4 Всего: 7 |
Может кто-то посоветует framework для работы с транзакциями ?
|
|||
|
||||
alexadr |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 25.9.2006 Репутация: нет Всего: 4 |
Я бы предложил оборачивать все действия с персистентными объектами, - сессионными бинами, при этом у соответствующих методов достаточно будет указать параметр(Аннотацию) для тразкации. А EntityManager получать в бине с помощью dependency injection.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |