一个SESSION的事务处理100条记录,然后关闭在开,每次在开一个新的事务处理是否都会刷新HIBERNATE缓存?
一个SESSION的事务处理100条记录,然后关闭在开,每次在开一个新的事务处理是否都会刷新(清除)HIBERNATE内部缓存和二级缓存?
------解决方案--------------------
事务控制
针对hibernate由三种dao操作 find save flush
find即查询不需要开事务,所以可以考虑针对查询不使用事务控制
针对saveOrUpdate使用事务
现在事务提交是在filter结束的时候去做
但有一些action中是不需要事务的,频繁开关事务可能会带来一定的系统开销
当前测试使用和不使用事务进行查询测试结果(根据ID查询记录100次时间比较)
不开事务 421ms
打开事务 516ms
事务的开关最好限定在方法内部,可以考虑在service方法中开关事务,可以避免这个问题
session关闭和事务提交的时候,hibernate会主动调用flush方法进行数据库同步
所以在当前项目中不需要关心flush方法