本帖最后由 gbx007 于 2009-08-26 09:54:02 编辑

解决方案 »

  1.   

    <!-- 配置事务管理器 -->
      <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
      <property name="sessionFactory">
      <ref local="sessionFactory"/>
      </property>
      </bean>
     
      <!-- 配置事务的传播特性 -->
      <tx:advice id="txAdvice" transaction-manager="transactionManager" >
      <tx:attributes>
      <tx:method name="add*" propagation="REQUIRED"/>
      <tx:method name="del*" propagation="REQUIRED"/>
      <tx:method name="update*" propagation="REQUIRED"/>
      <tx:method name="deploy*" propagation="REQUIRED"/>
      <tx:method name="*" read-only="true"/>
      </tx:attributes>
      </tx:advice>
     
      <!-- 配置哪些类哪些方法使用事务 -->
      <aop:config>
      <aop:pointcut id="allManagerMethod" expression="execution(* com.zzq.oa.manager.*.*(..))"/>
      <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
      </aop:config>
     
      

  2.   

    回复2楼的, SPRING的 事务管理我会,  我是想知道 为什么用了事务管理,  pic.getUser() 就可以 正常运行了 。  HibernateTransactionManager 里的init-lazy 默认是什么? 
      

  3.   

    回复badboy169168  lazy-init="default"       就是 不采用延迟加载咯? 
    但我感觉这个和hibernate延迟加载没什么关系, 这个应该是 启动时 spring 是否 进行加载吧 , 因为 我从 tomcat 启动的时间 来判断的?  那位说下  HibernateTransactionManager lazy-init  的作用吧?  还有autowire的作用 
      

  4.   

    在web.xml配置文件中加一OpenSessionInViewFilter
      

  5.   

    <filter>
    <display-name>OpenSessionInViewFilter</display-name>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
      

  6.   

    这个是可以解决 SESSION关闭的问题, 但我想知道 为什么用了事务管理  也可以解决SESSION关闭的问题?
      

  7.   

    lazy-init 是spring的beanfactory启动的时候就加载hibernateTransactionFactory,与hibernate对pojo的延迟加载没关系。autowire是bean的装配策略,意思是你可以改变装配策略而不需要在bean中写ref="某个bean id",策略可以分为按照bean类型、bean名称、构造器参数和不确定性装配(autodetect,先自动按照构造器参数,然后用byType).事务管理相对于一个类或者业务方法,在执行之前,spring会确保被声明的类或者方法出于同一个事务中,而事务是与session联系的,因为要确保事务开启就必须先开启session,事务完了spring会帮你关闭session,基本上就是代理和拦截器做的工作.
      

  8.   

    本人对配置OpenSessionInViewFilter的作用也不是很明白,指点一下,谢谢大虾了。。