`

hibernate 整合spring

阅读更多
首先是Spring整合Hibernate:
以前用我们用Hibernate的时候都是自己创建SessionFactory,然后创建Session。之后用Session操纵数据库。而现在我们可以用HibernateDaoSupport这个类,这个类是Spring里面的一个类,是借助Spring的帮组来完成我们的hibernate数据库操作。我们的Dao类可以继承这个类,然后有个方法getHibernateTemplate(),这个方法是获得针对当前Dao类的Hibernate模板,这个模板里有操纵数据库的各种方法,而且也有getSession()获得Session的方法。【模板里的操纵数据库的各种方法底层其实就是用的是Session在操纵数据库】


jar包引入方式参见iteye博客文章: java三大框架独立运行以及互相之间整合各自需要用到的jar文件以及配置方式  里面的hibernate整合spring步骤


HibernateDaoSupport是Spring里面的一个类(org.springframework.orm.hibernate3.support),这是一个方便的父类,用于基于hibernate Dao的数据访问对象。这个类里面有一些session,比如getSession()方法,返回的就是Hibernate里面的那个session。里面最重要的一个方法是getHibernateTemplate()方法,获得针对当前Dao的Hibernate模板。而得到的HibernateTemplate类里面的方法很多都是类似于Hibernate里面的Session里面的方法,其实它们底层的实现就是对应的采用Hibernate里面的Session里的对应的方法实现的。

而HibernateDaoSupport这个类是严重依赖于配置文件的,没有配置文件,它根本不知道SessionFactory在哪里。所以一定要通过Spring的配置文件告诉它SessionFactory在哪里,然后给它注入进去。但是问题又来了,SessionFactory对象我们又从哪里得到呢?hibernate整合Spring之后,hibernate的配置文件hibernate.cmf.xml就不用了,都配置在Spring的配置文件applicationContext.xml里面。所以现在SessionFactory是由Spring统一管理的,SessionFactory放到Spring的IOC容器里面由Spring来统一管理。下面讲解applicationContext.xml的配置方式。

1、 将SessionFactory注入到HibernateDaoSupport里。
2、 自己构建SessionFactory。获得SessionFactory有两种方式,第一种是通过获得一个连接,然后连接注入到SessionFactory里即可(以前讲的);第二种是使用数据库连接池,其实在实际开发里面单纯的用一个个连接这种方式基本不用,实际开发中用的都是数据库连接池,以前讲那种方式在实际开发中基本不用,java中常用的一种数据库连接池是dbcp,  要想使用dbcp就需要加入它依赖的jar包,commons-dbcp.jar和commons-pool.jar,我们用dbcp的时候要用到的一个类是BasicDataSource,数据源,我们需要在Spring的配置文件里面配置好数据源(配置上去之后就说明项目使用了dbcp)。数据源是一切数据的根源,把数据源配置好了,它可以给我们提供连接,然后把数据源注入到SessionFactory里面,这样的话SessionFactory就可以获得连接了,然后再把SessionFactory注入到HibernateDaoSupport(自己的Dao里)里面,然后就可以把Dao注入到Service层里面去…



我们在Spring的配置文件里面配置完连接池之后,就需要配置SessionFactory了,创建SessionFactory,注意,这个时候(Hibernate整合Spring之后)我们就不再使用Hibernate的那个SessionFactory了,在Spring里它提供了一个对SessionFactory的封装,封装的类的名字是LocalSessionFactoryBean。LocalSessionFactoryBean会创建一个SessionFactory,创建SessionFactory需要将刚配置完成的数据源BasicDataSource注入到LocalSessionFactoryBean里面。

因为这里的LocalSessionFactoryBean代表了Hibernate那个配置文件hibernate.cfg.xml,对于那个文件自己还有一些额外的信息,比如是否显示hql语句、映射文件在什么地方等等。mappingResource参数指定的是hbm文件的位置映射。

我们自己写的dao本身继承了HibernateDaoSupport,而HibernateDaoSupport又依赖于上面配置完成的sessionFactory,所以需要将sessionFactory注入到Dao里面。


详细整合信息见附件工程:重点查看配置文件applicationContext.xml连接池配置方式

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics