spring 与hibernate 的 整合 源码分析
时间:2011-01-17 来源:xupei
其实 spring和hibernate的整合就是spring-orm.jar和 hibernate3.jar这两个包中分析:
好了 首先在 spring-orm.jar这的包中:
我们在写dao层的时候大家习惯性的 让我们的dao层继承HibernateDaoSupport 这的类。在这个类中大家发现没有其实这个类中 有SessionFactory属性和hibernateTemplate属性分别有他们的get/set方法:
public final void setSessionFactory(SessionFactory sessionFactory) {
>>>>>>>>>省略:
}
和
public final void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
也就是说 我们可以往我们的dao中注入sessionFactory或者hibernateTemplate 其实 。
hibernateTemplate类继承了HibernateAccessor类 和实现了HibernateOperations接口,
在HibernateAccessor类中有SessionFactory的get/set方法,我个人建议大家将SessionFactory
放到hibernateTemplate中 再将其放入到HibernateDaoSupport中.(其实两者差别不大几乎没有差别只是编程的习惯问题吧!个人的认为这样让我们的更能很好的去做spring的依赖注入)。
接下来就是hibernateTemplate的工作了 。
hibernateTemplate其实就是hibernate的工作了。
在hibernate3.jar中 有一个上下文的包叫context包,这个包中的所有的接口都是上下文使用的。其中有一个CurrentSessionFactory的接口 spring就是通过这个接口和hibernate在线程上(也是就是事务的控制)整合的。
spring事务的控制……下回再说》