跟Session没关系在serviceImpl的方法上添加事务传播属性Required,spring就会将该方法的操作当成一个事务提交了。

解决方案 »

  1.   

    在声明式事务中,事务加在service层,在一个service方法中的session就应该是同一个
    这要看你怎么获取的session,如果直接获取的HibernateDaoSupport的getSession或getSessionFactory().openSession即使是在事务中,事务也不会生效的。
    通过hibernateTemplate模板方法或回调方法更新数据库就没问题了
      

  2.   


    2楼正解,我们一般的事物是设在service层调用dao层那里,就是说。在执行这个service方法之前spring 自动帮你开启事物,执行完成之后自动帮你关闭事物,并提交回滚。
    如果事物是设置在dao层中就要看你设置的事物的传播方式。不然spring会当做是2个事物的方式处理
      

  3.   

    这个要看你用的是hibernate还是jdbc了  还有就是把事务最好放在service层
      

  4.   

    当你程序在提交成功的时候事务就是完成提交,不管你调用多少个Dao都不会被看成有多个Session
    所以不是两个Dao的事情