나는 Hibernate 4에서 Spring MVC를 사용하고있다.
List에서 모든 Criteria를 사용하여 테이블의 모든 레코드를 가져 오는 것이 문제이다.
테이블에 1 초마다 레코드를 삽입하는 타사 프로세스와 사용자가 "새로 고침"버튼을 누를 때마다이 테이블을 나타내는 화면이 있습니다.
동일한 세션에서 Criteria.list()를 사용할 때 지연 시간이 45 초인 레코드가 있습니다. 최저한의. 즉 사용자는 45 초 전에 삽입 된 레코드를 보게됩니다.Hibernate Criteria list가 새로운 레코드를 즉각 반환하지 않는다.
Criteria crit = getCurrentSession().createCriteria(Audit.class);
return ((List<Audit>) crit.list());
이 + 트랜잭션 설정을 최대 절전 모드입니다 :
이
는 기준을 사용하는 것입니다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
이미에 시도했다 : 높은 하나
어떤 제안가
- 안 쿼리 캐시
- 변경 격리 수준?
감사합니다.
Spring MVC OpenSessionInViewFilter를 사용하여 요청마다 getCurrentSession()을 사용하고 있습니다. 또한이 세션 연결 설정을 기반으로 새 세션을 열려고 시도했지만 성공하지 못했습니다. 2 차 레벨 캐시가 없습니다. 또한 정확한 삽입을위한 새로운 데이터는 매번 TOAD를 사용하여 확인합니다. 고마워, 탈. – etingertal