首先dao层不再继承hibernatedaosupport
dao层开始用原生的hibernate api
sessionFactory
那么问题来了
用sessionFactory.openSession();获取session 该方式获取的session是不受spring管理的,在和数据库交互的过程中,需要手动的打开和关闭事务。并且关于session的问题,还是那个原则“谁创建谁关闭”。意思就是,必须手动关闭session。哪怕你使用了@Transactional注解。
解决方法
第一步:把所有的sessionFactory.openSession();换成sessionFactory.getCurrentSession();
第二步:配置springmvc.xml
<!-- 默认的注解映射的支持 -->
<mvc:annotation-driven />
<!-- 配置义过滤 -->
<mvc:interceptors>
<!-- 开启openSessionInView -->
<bean class="org.springframework.orm.hibernate4.support.OpenSessionInViewInterceptor">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
</mvc:interceptors>
第三步:重启服务器!