程序的结构一般是:action调用service,service调用dao,dao操作数据库, 
事务加在service上面,如: 
<aop:config> 
<aop:pointcut id="allManagerMethod" 
expression="execution (* 
com.edgar.cmmysql.service.*.*(..))" /> 
<aop:advisor advice-ref="txAdvice" 
pointcut-ref="allManagerMethod" /> 
</aop:config> 
是不是说在action调用service的时候,就开启事务了呢? 在service的方法调用完之后,事务关闭了??
dao里面有: 
this.getHibernateTemplate().save(obj); 
session是什么时候被创建和关闭的呢?
我真的弄不明白,高手的几句话能让初学者豁然开朗的。

解决方案 »

  1.   

    打开ie的时候session被创建;如果程序中没有写session的存活时间的话;一般情况是半个小时左右吧!session会自动关闭
      

  2.   


    此session非彼session也
      

  3.   

    调用getSession(true)时被创建;
    调用Session s.close时被关闭;
      

  4.   

    调用getSession(true)时被创建;
    调用Session s.close时被关闭;
      

  5.   

    用完了最好关闭
    try{
      .............
      s.save(object);
    }catch(....){
      .............
    }finally{
      s.close();
    }
      

  6.   

    getHibernateTemplate()你这个对象是封装好的,在执行时其实是完成了所有的执行步骤,包括关闭,这个你不用考虑太多,执行完以后自动关闭,你可一开下源码包。还有就是说事务传播那,应该是是在调用servie实现的时候才真正去加载
      

  7.   

    session的开启与关闭在使用SSH的时候是不用你自己操心的,它由IOC容器进行管理的。如果你非要自己管理的话,那是在Hibernate中,Session session = SessionFactory.openSession();这个时候开启Session的。另外看你写的那些代码,是使用AOP通知的方式实现事务的管理,其实我建议你使用AOP自动代理去代替你写的内容,会简单很多,而且会容易理解很多。
      

  8.   

    this.getHibernateTemplate().save(obj); 
    session是什么时候被创建和关闭的呢? 继承HibernateDaoSupport类,使用HibernateTemplate来持久化,HibernateTemplate是Hibernate Session的轻量级封装
    session创建和关闭等问题  有spring容器来管理  你不用考虑。