Hibernate禁用二级缓存

时间:2013-05-01 08:01:21

标签: mysql database hibernate second-level-cache

在hibernate SQL中..我在hibernate config xml文件中执行了以下操作:

 <hibernate-configuration>
<session-factory>
      <property name="hibernate.cache.provider_class">
     org.hibernate.cache.NoCacheProvider
  </property>

      <property name = "org.hibernate.cacheable">false</property>
      <property name="hibernate.cache.use_query_cache">false</property>
      <property name="hibernate.cache.use_second_level_cache">false</property>

在代码中我做了以下内容:

public static List<Object> selectFromStudents(String queryName, Object[]                queryParameters) {
    Session  session = null;
    List<Object> queryList = null;
    try{
        session = mySessionFactory.openSession();
        Query query = session.getNamedQuery(queryName);
        query.setCacheable(false);

        if (queryParameters != null) { 
            // set the query parameters 
            for (int i = 0; i < queryParameters.length; i++) {
                query.setParameter(i, queryParameters[i]);
            }
        }
        // execute the query
        queryList = (List<Object>) query.list();
    } catch(HibernateException e){
        e.printStackTrace();
    } finally{
        if(session != null){
            session.clear();
            session.close();    
        }
        if(queryList != null){
            return queryList;
        }
        else{
            // no data returned
            return new ArrayList<Object>();  
        }
    }
}

问题是,当我两次执行相同的查询时,它会给出相同的结果..这意味着在第二次它得到的缓存结果不是来自数据库

我希望它始终访问数据库。解决方案是什么。

0 个答案:

没有答案