Spring 持久层

本文介绍如何使用Spring管理Hibernate,包括整合SessionFactory、DAO层操作、事务管理及依赖关系。通过Spring的配置,可以简化Hibernate的使用并提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >





二、

三、

四、

五、

六、

七、

八、

九、

十、

十一、

十二、

十三、

十四、

十五、

十六、

十七、

十八、

十九、

二十、

有了这样的一个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的事务管理是一样的。只不过如前面提到的,SpringHibearnte提供了一个专门的事务管理者:

org.springframework.orm.hibernate3.HibernateTransactionManager

此处示例声名式的自动代理方法对Service的事务进行管理

配置事务管理者:

 

 

创建事务切面:
w
 

依赖关系
此时应用程序的依赖关系如下图所示:
 
n         实现业务接口
n         由Spring注入所需的DAO
n         由Spring给业务方法切入事务
DAO类:
       继承HibernateDaoSupportHibernateDaoSupport又依赖HibernateTemplate,而
HibernateTemplate依赖SessionFacoryHibernateDaoSupportHibernateTemplateSpring管理。
所以对与DAO类,只需要通过Spring的配置文件注入SessionFactory即可。
HibernateTransactionManager
       管理事务,依SessionFacory,所以需要Spring注入SessionFacotry
SessionFacory
   与数据源,所以需要通过Spring注入DataSource


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值