一个SESSION的事务处理100条记录,然后关闭在开,每次在开一个新的事务处理是否都会刷新(清除)HIBERNATE内部缓存和二级缓存?

解决方案 »

  1.   

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

  2.   

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