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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Spring transaction, Как завершить транзакцию в ручную 
V
    Опции темы
Dreamtraveler
Дата 12.7.2010, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. Хотелось бы услышать мнения знающих людей вот по такой проблемме:

Работаю со Spring 2.0 с боле новыми jawa 1.4 не дружит а жаль.

так вот имеются следующие настойки transactionManager 

Код

 <bean name="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
<bean name="abstractTransactionProxy"
            class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
            abstract="true">
        <property name="transactionManager" ref="txManager" />
        <property name="transactionAttributes">
            <props>
                 <prop key="find*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED, readOnly
                </prop>
                <prop key="get*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED, readOnly
                </prop>
                <!-- <prop key="find*">PROPAGATION_REQUIRES_NEW, ISOLATION_READ_UNCOMMITTED, readOnly
                </prop>
                <prop key="get*">PROPAGATION_REQUIRES_NEW, ISOLATION_READ_UNCOMMITTED, readOnly
                </prop>-->
                <prop key="add*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED, -Exception
                </prop> 
               <!--   <prop key="add*">PROPAGATION_REQUIRED, ISOLATION_READ_UNCOMMITTED, -Exception
                </prop>-->
                <prop key="update*">PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED, -Exception
                </prop> 
               <!--<prop key="update*">PROPAGATION_REQUIRED, ISOLATION_READ_UNCOMMITTED, -Exception
                </prop>-->
                <prop key="delete*">PROPAGATION_REQUIRES_NEW, ISOLATION_READ_UNCOMMITTED , -Exception
                </prop>
            </props>
        </property>
    </bean>


Сохраняю в базу определенную информацию и тут же пытаюсь её прочесть и... не выходит приложение не видит сохраненную информацию, хотя она явно появилась в базе данных. Я думаю что в момент чтения транзакция не завершена и поэтому данные из этой же транзакции не ведны. Как мне завершить транзакцию в ручную чтобы данные стали ведны.
Если остановить приложение и снова запустить то данные читаются нормально. Эксперименты с TransactionProxyFactoryBean не дали ни каких результатов. 
PM MAIL   Вверх
necromancer
Дата 12.7.2010, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 26.7.2006
Где: Москва

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



можно принудительно вызвать у сессии flush или commit.

Так же можно данные читать из другой транзакции. А вообще смысл сохранять и читать те же данные? 


--------------------
С уважением, 
                 Виталий Смык
----------------------------------------------------------------------------------------------
SCJP, SCWCD, OCA
http://dev.maryno.net/video/
PM MAIL WWW ICQ Skype   Вверх
Dreamtraveler
Дата 12.7.2010, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дело в том что работа происходит так: нажимаем кнопку "пересчет" приложение считает сохраняет в БД, а другая часть приложения читает и выводит пользователю. Сделано так чтобы без пересчета данные можно было доставать. Пересчет может автоматом срабатывать иногда, а может и в ручную.
И еще хуже того. При нажатии на пересчет данные посчитались и сохранились. Даже после этого нажимаем кнопку показать идет новый запрос  и все равно данные не видны пока приложение не перезапустишь.
пробовал flush не помогает template.flush();
template.getSessionFactory().getCurrentSession().getTransaction().commit(); а это вообще ошибку вызывает типа транзакция не создана а мы её commit(); 
Может можно как то в настройках xml файла сделать так чтоб транзация данного метода сразу завершалась?

Добавлено через 52 секунды
А как читать данные не закоммитеной транзаккции?
PM MAIL   Вверх
batigoal
Дата 12.7.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Цитата(Dreamtraveler @  12.7.2010,  14:54 Найти цитируемый пост)
А как читать данные не закоммитеной транзаккции? 

Либо делать это из той же транзакции, либо на уровне базы задавать уровень изоляции dirty reading (не знаю, умеют ли подобное Спринговые транзакции). На практике использование dirty reading вряд ли оправданно.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Dreamtraveler
Дата 13.7.2010, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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


 




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


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

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