struts + Hibernate + Spring WEB框架
struts:负责显示层,是一个完美的MVC实现,它调用业务层完成运算逻辑,业务层再调用持久层完成数据库的读写。
Hibernate:创建一系列的持久化类,将每个类的属性与数据库表的属性一一对应。
Spring:依赖注射和控制反转。只要拿到一个实现了这个接口的类,就可以轻松的通过xml配置文件把实现类注射到调用接口的那个类里。所有类之间的这种依赖关系就完全通过配置文件的方式替代了。
Java Web应用程序架构:Struts负责显示层,Hibernate负责持久层,Spring负责中间的业务层。
另外,由于Spring使用的依赖注射以及AOP(面向方面编程),所以它的这种内部模式非常优秀,以至于Spring自己也实现了一个使用依赖注射的MVC框架,叫做Spring MVC,同时为了很好的处理事物,Spring集成了Hibernate,使事物管理从Hibernate的持久层提升到了业务层,使用更加方便和强大。
所谓的三层开发就是将系统的整个业务应用划分为"表示层-业务逻辑层-数据访问层"
1、Struts
Struts的控制文件struts-config.xml、Action和Action Servlet实现MVC的控制器,JavaBean或者EJB完成MVC的模型部分,JSP页面承担MV的视图组件,而且所有的控制逻辑都是有struts-config.xml配置文件来完成。
Struts2提供了丰富的拦截器实现
2、Hibernate
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级别缓存,属于进程范围或群集范围的缓存。可以进行配置和更改,并可以动态加载和卸载。
3、Spring
Spring:核心容器提供Spring框架的基本功能。核心容器主要组件是Bean Factory,它是工厂模式的实现。Bean Factory 使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。控制反转即依赖注入是Spring的核心。对象间的某种依赖关系式由容器在运行期间注入调用者,控制程序间的关系的实现交给了外部容器来完成。
依赖注入存在2中实现方式:
1、设值注入即Set注入
2、构造注入
总结:
Struts 用于表示层,直接面向用户,响应用户的请求,为显示提供一个模型和一个控制器,并委派调用业务逻辑和其他上层处理等功能。
Spring 在事务管理和依赖注入方面的独特能力,实现处理应用程序的业务逻辑和业务校验,以及提供与其他层进行相互作用的接口等。
Hibernate 是ORM(对象关系映射) 的实现,利用它建立Java 对象模型的持久化对象,进而以面向对象的方式来方便地操作关系数据库。
这样Struts、Spring 和Hibernate 就能够很好地封装各个层次的程序,如在处理前台表示层时就不会把事务逻辑和持久化逻辑掺杂进来,从而最大限度地实现各层的高内聚低耦合目标。