如果使用了OpenSessionInView模式,DAO类继承HibernateDaoSupport,使用getSession()方法就可以拿到绑定到当前线程的线程安全的Session

解决方案 »

  1.   

    那spring中的配置文件要如何修改呢?
    本来的<bean id="baseDAO" class="dao.BaseDAO" abstract="true">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <bean id="userDao" class="dao.UserDaoImpl" parent="baseDAO"></bean>
    baseDAO是我自己写的类,用来提供session的。
      

  2.   

    web.xml里配置,过滤器,在每次请求的时候过滤器提供一个session,结束时由filter自己关闭<filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
    </filter>
     
    <filter-mapping>
    <filter-name>hibernateFilter</filter-name>
    <url-pattern>*.html</url-pattern>
    </filter-mapping>你的DAO要继承HibernateDaoSupport,否则你的DAO方法里用的session不是由OpenSessionInViewFilter提供的唯一的session
      

  3.   

    我的意思是需要在spring中怎么修改,其他的设置我基本明白,那我baseDAO这个类还有用吗?(怎么在帖子中 贴出你那样的代码块?)
      

  4.   

    就是DAO的实现类继承HibernateDaoSupport,直接调用其中的getSession()方法即可?那么spring中要如何配置呢?
      

  5.   

    为什么没有人回答呢?是不是我问的不清楚 还是openSessionInView这个技术不常用?如果大家觉得分少的话我可以加分。
      

  6.   

    仅仅是openSessionInView模式的话,spring配置文件里没什么改的。
    你的baseDAO事由其他dao继承的么?那么baseDAO就先继承HibernateDaoSupport,反正保证所有dao获得的session是由HibernateDaoSupport提供的就可以