自己使用spring和hibernate结合,利用声明事务+hibernateTemplate来处理事务和完成具体操作。
利用spring产生的service代理对象调用dao的save方法,这里的save方法执行后数据能够正常插入数据库,但是当我在dao的save方法中使用hibernateTemplate.getSessionFactory().getCurrentSession().getTransaction().isActive()方法时输出的却是false
save方法是正常的执行了,数据也正常插入了,就是不理解这个isActive()的结果是什么原因,求指教。 声明式事务 spring

解决方案 »

  1.   

    你可以在hibernateTemplate.getSessionFactory().getCurrentSession().save()前后打印下它的值。
      

  2.   

    我就是在save方法之前输出的isActive(),结果是false我才好奇的。网上找的资料看来好像是获得的session不同,但是我觉得session是从指定的线程中获取的应该是同一对象才对。
      

  3.   

    事物应该是spring容器管理的吧。不论你db层用的hibernate 或ibatis 等等。spring都不应该去改其内部的东西。
      

  4.   

    确定这样获得的Transaction
    hibernateTemplate.getSessionFactory().getCurrentSession().getTransaction()和声明式配置的Transaction是同一个?http://www.iteye.com/problems/67159
      

  5.   

    请教了下别人:spring声明式事务处理的事务是在给hibernteTemplate对象注入时才出发开启的,自己的方法是得不到那个事务的,还有getTransaction是返回一个新的事务。