Spring管理下的hibernate,service方法里存在循环查询数据的情况,是不是有可能造成hibernate session一级缓存溢出?
方法不结束,事务也就没有结束,session也就不关闭,一级缓存不断变大,是不是这样?

解决方案 »

  1.   

    如果数据太大,需要手工执行flush()
      

  2.   

    自己试一下,看什么时候执行flush()可以避免溢出吧。说明你们处理的数据量太大了,分阶段flush()掉session
      

  3.   


    就算不是hibernate,用JDBC你写一个service 在那里一直循环,方法不结束也会内存溢出在一个事物中应该是只有一个会话用来处理提交和回滚。当方法不结束,会话也不能结束。
      

  4.   

    循环查询数据的时候,每隔1000个数据flush一把,就没有问题了。
      

  5.   

    一级缓存溢出可能是你进行了批量的添加,或者更新操作...
    需要session.clear()清理缓存