Список Критерии гибернации не возвращает новые записи немедленно
Я использую Spring MVC с Hibernate 4.
Моя проблема, когда я использую Criteria с методом list(), чтобы получить все записи из таблицы.
Существует сторонний процесс, который вставляет записи в таблицу каждую 1 секунду, и экран, который представляет эту таблицу, как каждый раз, когда пользователь нажимает кнопку "Обновить".
Когда я использую Criteria.list() в одном сеансе, я получаю записи с задержкой в 45 секунд. минимум. Это означает, что пользователь видит записи, которые вставляются только за 45 секунд.
Это критерии использования:
Criteria crit = getCurrentSession().createCriteria(Audit.class);
return ((List<Audit>) crit.list());
Это hibernate + настройки транзакции:
Session Factory:
<bean id="auditsSessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="abstractDataSource"/>
<property name="packagesToScan" value="com.java.model" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<!-- Only for debug -->
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.connection.charSet">UTF-8</prop>
</props>
</property>
</bean>
Transcation Manager:
<bean id="auditsTxManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="auditsSessionFactory"/>
</bean>
Настройка @Transactional:
@Transactional(isolation = Isolation.READ_COMMITTED, value = "auditsTxManager")
Также я использую: OpenSessionInViewFilter
Я уже пытался:
- Отключить кеш запросов
- Изменить уровень изоляции на более высокий
- очистить () сессия
Какие-либо предложения?
Спасибо, Тал.
1 ответ
Кеш запросов не актуален, так как здесь используются критерии.
Есть кеш сессии, вы создаете новую сессию с каждым запросом?
Вы уверены, что вставки вставляют новые данные правильно / и не проблема с корректным отображением веб-страницы. А кеша 2-го уровня нет?