struts:负责显示层,是一个完美的MVC实现,它调用业务层完成运算逻辑,业务层再调用持久层完成数据库的读写。程序员
Hibernate:建立一系列的持久化类,将每一个类的属性与数据库表的属性一一对应。数据库
Spring:依赖注射和控制反转。只要拿到一个实现了这个接口的类,就能够轻松的经过xml配置文件把实现类注射到调用接口的那个类里。全部类之间的这种依赖关系就彻底经过配置文件的方式替代了。编程
Java Web应用程序架构:Struts负责显示层,Hibernate负责持久层,Spring负责中间的业务层。缓存
另外,因为Spring使用的依赖注射以及AOP(面向方面编程),因此它的这种内部模式很是优秀,以致于Spring本身也实现了一个使用依赖注射的MVC框架,叫作Spring MVC,同时为了很好的处理事物,Spring集成了Hibernate,使事物管理从Hibernate的持久层提高到了业务层,使用更加方便和强大。session
所谓的三层开发就是将系统的整个业务应用划分为“表示层-业务逻辑层-数据访问层”架构
一、Strutsapp
Struts的控制文件struts-config.xml、Action和Action Servlet实现MVC的控制器,JavaBean或者EJB完成MVC的模型部分,JSP页面承担MV的视图组件,并且全部的控制逻辑都是有struts-config.xml配置文件来完成。框架
Struts2提供了丰富的拦截器实现ide
二、Hibernatespa
Hibernate是数据持久层的一个轻量级框架,它对JDBC进行了很是轻量级的对象封装,使得Java程序员能够为所欲为的使用
对象编程思惟来操纵数据库。提供了查询获取数据的方法,用面向对象的思想来操做数据库,节省开发处理数据的时间。
在物理数据库之上利用一些配置文件如hibernate.cfg.xml、Action和Action文件、XML Mapping(映射文件)等来为应用系统
提供数据持久化方面的服务,同时达到将应用系统的持久层与不一样的物理数据库系统相互隔离开的目的。
Hibernate的工做流程:
读取并解析配置文件;
Configuration负责读取并建立映射信息,建立session factory
SessionFactory负责建立session;
Transaction负责开启事务Transaction;
Query负责执行持久化操做;
Transaction负责提交事务;
关闭session和session factory;
Hibernate中提供了两级Cache,第一级别的缓存是Session级别缓存,它属于事务范围的缓存。由Hibernate管理,通常状况下无需进行干预。第二级别的缓存是Session Factory级别缓存,属于进程范围或群集范围的缓存。能够进行配置和更改,并能够动态加载和卸载。
三、Spring
Spring:核心容器提供Spring框架的基本功能。核心容器主要组件是Bean Factory,它是工厂模式的实现。Bean Factory 使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。控制反转即依赖注入是Spring的核心。对象间的某种依赖关系式由容器在运行期间注入调用者,控制程序间的关系的实现交给了外部容器来完成。
依赖注入存在2中实现方式:
一、设值注入即Set注入
二、构造注入
总结:
Struts 用于表示层,直接面向用户,响应用户的请求,为显示提供一个模型和一个控制器,并委派调用业务逻辑和其余上层处理等功能。
Spring 在事务管理和依赖注入方面的独特能力,实现处理应用程序的业务逻辑和业务校验,以及提供与其余层进行相互做用的接口等。
Hibernate 是ORM(对象关系映射) 的实现,利用它创建Java 对象模型的持久化对象,进而以面向对象的方式来方便地操做关系数据库。
这样Struts、Spring 和Hibernate 就可以很好地封装各个层次的程序,如在处理前台表示层时就不会把事务逻辑和持久化逻辑掺杂进来,从而最大限度地实现各层的高内聚低耦合目标。