粗谈Struts+Hibernate+Spring开发——从分层,对接,蔓延的开发过程来看Struts,Hibernate,Spring的整合开发

 1.设计持久化层
  在使用Hibernate来完成持久层的系统中,持久化层包括:数据库中的表,影射文件,POJO类。
    设计持久层有两种方法:
      ●对需求进行分析,提取应用中的对象,将这些对象抽象成类,再抽取其中需要持久化保存的类,

这些类就是系统中要用到的POJO类了。从POJO类出发,手动地建立数据库的表,再手动地编写影射文

件。当然,如果使用工具的话,我们完全可以,从POJO类生成影射文件和数据库中的表。
      ●对需求进行分析,设计数据库。根据数据库中的表手动地编写POJO类,再手动地编写影射文件。

同样,如果使用工具的话,我们可以从数据库中的表出发,生成影射文件和持久化类POJO。
  2.DAO层的实现
   在这一层的实现中,Spring为与Hibernate的整合提供了很好的支持类——HibernateDaoSupport类,只需

向该类传入一个SessionFactory的引用,即可通过通过getHibernateTemplate()方法得到一个

HibernateTemplate类的实例,该类的功能非常强大,对数据库的大部分操作都可通过该实例很容易地

实现。所以我们一般都是使每个DAO类都继承自这个HibernateDaoSupport类。
  在应用当中,我们通常都是由Spring对DAO进行统一的管理,由Spring向DAO组件中注入SessionFactory

的实例。为了与Hibernate的整合,Spring提供了大量的工具类。通过LocalSessionFactoryBean类就可以

将Hibernate的SessionFactory纳入其IoC容器内。对SessionFactory bean的封装配置需要Hibernate的数据

源,所有影射文件,Hibernate的属性这些信息。
  最后,在配置每个DAO组件时,向其中注入SessionFactory bean的引用。这里一个明智的作法是配置

一个父bean,向其中注入SessionFactory bean,再让所有的DAO bean都继承它。
  3.Service层的实现
  Service需要实现的业务方法主要取决于业务的需要。这些业务方法中,需要对数据库进行操作的都需

要用到相应的DAO实例。因此Service组件中一般都需要有DAO实例,除非这个应用系统用不到数据库

。这正是Spring的用武之地,我们可以通过Spring向Service组件的bean之中注入DAO  bean。
 ----------------------------------------------------------------从底层向上层的开发暂停,等待对接--------------------------------------
  4.Struts MVC层的实现
      i.  继承ActionServlet对请求进行统一的拦截。
        我们对请求进行统一的拦截是为了解决请求时可能遇到的相同的问题,比如中文乱码问题。当然

,如果不存在请求中的相同的问题时,这一部就不没有必要了。
      ii.  根据需求分析编写JSP页面。
      iii.  根据JSP页面的请求完成ActionForm部分。
      iv.  根据请求的目的和意义编写Action。
  这Struts MVC层的实现时与Spring进行整合,具体方法见我的另外一文《粗谈Spring与Struts的整合——

从实现的Struts的扩展点上看Spring与Struts的整合》。
----------------------------------------------------------------对接Service组件-----------------------------------------------------------------
  5.实现Struts MVC层与Service层的对接
    在编写Action类的时候,一般都要调用业务逻辑方法(至接转发是除外)以实现业务逻辑。这就要求

Action类里要有Service组件对象的实例。这就和Service层完成了对接。
----------------------------------------------------------------蔓延---------------------------------------------------------------------------------
  6.再向Service层组件中添加业务逻辑方法
    因为我们采用的是从两头开发然后对接的方式,所以当我们从上层的往下层开发到Action时,调用其

中的Service组件成员的业务逻辑方法时,可能遇到需要的业务逻辑方法在Service组件中还不存在的情

况。这时,我们要在Service组件中添加相应的方法,这一过程我称之为蔓延。

  7.为业务逻辑组件配置代理

    在applicationContext.xml中,通过注入sessionFactory配置事务管理器,通过注入该事务管理器配置拦

截器,通过注入拦截器配置事务代理。

    可以向同一个代理注入多个拦截器,不一定就只注入一个事务拦截器,可以配制的多个起不同作用

的拦截器。

    这就完成了整个系统的开发了。我将这种从两头出发开发,从底层开发来的Service组件作为从上层开发来的Action类的成员的过程称为对接。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值