、

二、

三、

四、

五、

六、

七、

八、

九、

十、

十一、

十二、

十三、


十四、

十五、

十六、

十七、

十八、

十九、

二十、

有了这样的一个SessionFactory代理类之后,在你工程中原来的Hiberante-cfg.xml文件就可以删除了。所有的事情都让Spring管理起来了。
Spring管理HibernateDAO
数据访问对像DAO用来完成对数据的操作,它需要和底层的数据进行通信。而SessionFacory是底层数据访的一个管理对像,所以DAO应当依赖与SessionFactory。而此时的SessionFacrory已定让Spring管理起来,所以你的DAO应当依赖与Spring所提供的SessionFacory而不是hiberante本身的SessionFacory。

依据Spring的概念,SessionFactory是可以注入到DAO中的。所以在DAO中不要通过Spring上下文对像Context来得到SessionFacory。
你的DAO除了要关注SessionFacory还应做什么事情呢?----具体的数据操作方法如:add,delete,update,find等等。
你在编写这些方法的时候是如何做的呢?是不是在每一个方法中都要处理异常,关注事务等内容呢?有没有更好的方法呢?正如你想像的那样,spring对与hiberante也提供了模板支持。org.springframework.orm.hibernate3.HibernateTemplate,你可以使用模板来简化你的开发过程。这样你的开发过程将变得非常的简单。
可能你看到这里之后,你马上会问那么模板我该如何使用呢?我怎么样把它应用到我的工程中呢?不要着急,等一等,Spring并不推荐你直接配置和使用模板,它提供了一个对模板的封装类。
org.springframework.orm.hibernate3.support.
HibernateDaoSupport。你的DAO只需要继承它就OK了,你现在就可以直接使用HibernateDaoSupport所提供的方法:
getHibernateTemplate()就直接可以得到一个模板。然后使用模板提供的数据访问方法来操作数据如:
getHibernateTemplate().save(transientInstance);
getHibernateTemplate().delete(persistentInstance);
getHibernateTemplate().get("com.xaccp.database.dao.BrowRecoder", id)
等等方法来操作数据。
你的DAO类可能如下:

DAO要与数据库进行通信,那么它所使用的SessionFocatroy该怎么处理呢?其实可以通过Spring的配置文件,给DAO注入一个SessionFacotry如下:
Spring管理Hibernate事务
Spring中对Hiberante的事务管理与前面所提到的JDBC的事务管理是一样的。只不过如前面提到的,Spring对Hibearnte提供了一个专门的事务管理者:
org.springframework.orm.hibernate3.HibernateTransactionManager
此处示例声名式的自动代理方法对Service的事务进行管理
配置事务管理者:

创建事务切面:
w
n
实现业务接口
n
由Spring注入所需的DAO
n
由Spring给业务方法切入事务
DAO类:
继承HibernateDaoSupport而HibernateDaoSupport又依赖HibernateTemplate,而
HibernateTemplate又依赖与SessionFacory。HibernateDaoSupport和HibernateTemplate由Spring管理。
所以对与DAO类,只需要通过Spring的配置文件注入SessionFactory即可。
HibernateTransactionManager:
管理事务,依赖SessionFacory,所以需要Spring注入SessionFacotry
SessionFacory
依赖与数据源,所以需要通过Spring注入DataSource
|