2014-06-15 2 views
2

나는 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

이미에 시도했다 : 높은 하나

  • 명확() 세션
  • 어떤 제안가

    • 안 쿼리 캐시
    • 변경 격리 수준?

      감사합니다.

    답변

    0

    쿼리 캐시는 조건을 사용하므로 관련이 없습니다.

    세션 캐시가 있습니다. 요청마다 새 세션을 만드나요?

    삽입물이 새 데이터를 올바르게 삽입하고 있으며 웹 페이지가 올바르게 표시되는 데 문제가 없는지 확인하십시오. 그리고 2 차 수준 캐시가 없습니다.

    +0

    Spring MVC OpenSessionInViewFilter를 사용하여 요청마다 getCurrentSession()을 사용하고 있습니다. 또한이 세션 연결 설정을 기반으로 새 세션을 열려고 시도했지만 성공하지 못했습니다. 2 차 레벨 캐시가 없습니다. 또한 정확한 삽입을위한 새로운 데이터는 매번 TOAD를 사용하여 확인합니다. 고마워, 탈. – etingertal