看了网上不少的例子,都表示SSH方案中,基本配置如下
WEB.XML
 <filter>
        <filter-name>hibernateOpenSessionInViewFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    </filter>SPRING配置文件中 配置sessionFacotry对象等。
(以上配置文件假设设置都是对的)。但很少有文章来说明在hibernate中如何获取session对象开操作数据库的?
一般通过两种方式
1. 自己在DAO里面注入( springside就是这么做的)
public class SimpleHibernateDao<T, PK extends Serializable> {
   。
   protected SessionFactory sessionFactory;   @Autowired
public void setSessionFactory(final SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
2. DAO继承HibernateDaoSupport 然后注入父类
public class MyHibernateDaoSupport extends  
        HibernateDaoSupport {   
    // 为父类HibernateDaoSupport注入sessionFactory的值   
    @Resource(name = "sessionFactory")   
    public void setSuperSessionFactory(SessionFactory sessionFactory) {   
        super.setSessionFactory(sessionFactory);   
    }   
  
} 我看了OpenSessionInViewFilter的解释,它是通过ThreadLocal来记录session的。
但如果我采用了 方式1的DAO,那么我通过sessionFactory.getCurrentSession() 获取的session 是通过上面的ThreadLocal来获取的吗? 我看了下 源代码好像不是的。 它是通过Hibernate的ThreadLocal来获取的 和spring的ThreadLocal是两个完全不同德对象。但如果通过方式二,它得到的session恰好是spring容器管理的。不知道哪位高手能给我个合理的介绍。   Springle维护一个session这个没有问题,但是hibernate却如何使用上面的session来完成一系列动作 比较和数据库打交道的是hibernate