为什么要用strust.hibernate.spring

UI层:   借助struts实现

业务层:   借助SpringFramework进行业务组件的组装关联。

数据持久层: 借助Hibernate实现

域对象层   将所有域对象划分在一个层面

这样分层的原因是什么呢?

这个框架都是经过实践和考验的而且使用的人也很多。质量和性能都有保障这与自己写的代码相比。一定是这样比较好。而且利用这些框架可以进行快速开发。

层与层之间松藕合,增加代码可得用率。而且分开明确,便于开发。

1.1. UI层
UI 是User Interface的缩写,这一层是面向用户的界面,是用户与系统之间交互的媒介。如,用户在界面发送请求,系统接收请求,进行处理,然后通过界面将结果呈现于用户。这一过程包括了用户动作、数据传递、界面显示。大家熟悉的MVC模式就是将这三者分离,减少三者耦合。

我们在该层借助了Struts来实现:

·         用ActionForm类封装与用户互动的数据元素。

·         用Action类实现业务逻辑、动作处理、链接转向。实现MVC中的C

·         借助Struts标签来完成数据呈现。实现MVC中的V。

1.2. 业务层
在实际的项目开发中,每个领域都会有自己独特的业务逻辑,正因为这样,致使项目中代码高度耦合,原本有可能被重用的代码或功能,因为与具体的业务逻辑绑定在一块而导致很难被重用。因此我们将实现这些具体逻辑的代码抽取出来分为单独的一层,其目的是希望通过层,来降低它与系统其他部分的耦合度。

现实中世界是变化的,既然该层实现的是现实中具体的业务逻辑,那该层的实现代码不可避免的会发生变更。怎样让该层适应最大的变化,做到最小的改动?通常我们在编码的时候会尽量考虑到同一业务多种实现的兼容和可扩展的能力。因此我们在该层借助了Spring,通过依赖注入、AOP应用、面向接口编程,来降低业务组件之间的耦合度,增强系统扩展性。

1.3. 数据持久层
开发中与数据库进行数据交互必不可少,通常我们归为CRUD(添加、读取、修改、删除),这些操作占据了系统开发中大部分的时间,同时我们还需要考虑与数据库交互的性能问题,如连接池、数据缓存等等。因此该层实现我们借助了Hibernate。

Hibernate 是一个ORM工具,它不仅仅是实现了数据库访问性能优化和与数据库交互的常用操作(CRUD),还将数据表与对象进行了关联,让我们可以脱离数据表,而直接针对对象来与数据库交互,我们不再需要用字符串去描述表中字段,不再需要一个个”+“号去组装Sql语句。这使得编码中可书写性提高。

1.4. 域对象层
该层应该说是ORM思想的产物,ORM用对象关联数据表,我们将这些对象的集合归为一个专门的层即Domain Layer。域对象是各层之间数据通信的载体。实际上域对象也是一个完完全全的业务对象,如User对象、Book对象。通过对业务的对象化,这有利于业务逻辑的重用。

Spring整合Hibernate的好处

刚刚做了一个实例。首先独立然后Hibernate开发。要做的是建立配制文件,然后生成SessionFactory.现在改成Spring来做。可以直接将DataSource注入至org.springframwork.orm.hibernate3.LocalSessionFactoryBean中,至于Hibernate所需的相关设定则可透过LocalSessionFactoryBean的相关属性来设定,像是设定数据库名称、使用者名称、密码等。LocalSessionFactoryBean会建立SessionFactory的实例,并在执行依赖注入时将这个实例设定给UserDao.

Spring还专门定义了一个HibernateTemplate封装了对数据库的增删改查。得到它的方法有两种

private HibernateTemplate hibernateTemplate;

public void setSessionFactory(SessionFactory sessionFactory){

    hibernateTemplate = new HibernateTemplate(sessionFactory);

}

这种方法是直接得到,Spring另处提供了另处一种更简单的方法

extends HibernateDaoSupport

这样在程序里面就可以通过HibernateDaoSupport的getHibernateTemplate得到HibernateTemplate实例了。





你可能感兴趣的:(spring,Hibernate,框架,mvc,struts)