昨天我的一个朋友在研究spring和hibernate的整合,我告诉了他使用的办法,但是他想知道原理,我也没办法了。
后来向另一个朋友请教,他去网上找了篇文章,也给我解了惑,帖出来和大家分享一下
细心的朋友可能会注意,实际上LocalSessionFactoryBean并不是SessionFactory的实现,这个方案是否有问题呢?这个问题其实也一直困扰了我好久,最后我发现,我们通过 ApplicationContext的getBean()得到一个LocalSessionFactoryBean的时候其实并不是真正地得到了它,而是得到了一个 SessionFactory,因为spring为LocalSessionFactoryBean重写了getObject(),使其返回的是SessionFactory。一个简单的明证就是,HibernateDaoSupport的sessionFactory属性的类型是SessionFactory,而我们在spring配置的时候注入的却是LocalSessionFactoryBean。
spring中的LocalSessionFactoryBean很特别,呵呵...