Hibernate+Struts+Spring学习总结
从八月份到十月中旬这段时间一直在学习Hibernate、Struts、Spring以及SSH。到现在为止,自己已经能够简单的运用这三大框架。下面说一下自己对这些内容的初步认识。
从以下几个方面
首先谈谈hibernate,hibernate是是什么的东西,做什么用的。
在介绍hibernate之前,先给大家介绍一下ORM(object relation mapping)
对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。
ORM的优点:
a):JDBC操作数据库很繁琐
b):SQL语句编写并不是面向对象的
c):可以在对象和关系之间建立关联来简化编程
d):O/R MAPPING 简化编程
e):O/R MAPPING 跨越数据库平台
1、Hibernate
简介:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
优点:
a)、Hibernate 使用 Java 反射机制 而不是字节码增强程序来实现透明性
b)、Hibernate 的性能非常好,因为它是个轻量级框架。 映射的灵活性很出色。
c)、hibernate 同时支持多种不同的关系型数据库平台
d)、Java程序员可以随心所欲的使用对象编程思维来操纵数据库
所需的核心jar包:
a)、dom4j.jar: dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。这是必须使用的jar包,Hibernate用它来读写配置文件。
b)、commons-collections.jar:Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大。必须使用的jar包。
c)、antlr-2.7.6.jar:执行sql语句,必备包
d)、javassist-3.12.0.GA.jar:JAVA programming ASSISTant,它是一个类库编辑Java字节码。必须的包
e)、slf4j-api-1.6.1.jar:日志系统服务的api,SLF4j是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用所希望的数据库
f)、hibernate-jpa-2.0-api-1.0.0.Final.jar:对JPA规范化的支持(这个包最好加);
进行junit测试时所需jar包:
a)、hibernate-jpa-2.0-api-1.0.0.Final.jar
b)、junit-4.8.jar
2、Struts2
简介:Struts 2是一个简洁,可扩展的框架,用于创建企业级就绪的Java Web应用程序。该框架旨在从搭建,部署,维护应用程序上简化整个开发周期。WebWork的2最初被称为Apache的Struts 2。独立工作几年后,WebWork和Struts的社区联手创建的Struts2。这个新版本的Struts易于使用。
优点:
a)、 Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可以很好的掌控开发的过程
b)、 使用OGNL进行参数传递。
OGNL提供了在Struts2里访问各种作用域中的数据的简单方式,你可以方便的获取Request,Attribute,Application,Session,Parameters中的数据。大大简化了开发人员在获取这些数据时的代码量。
c)、强大的拦截器
Struts2的拦截器是一个Action级别的AOP,Struts2中的许多特性都是通过拦截器来实现的,例如异常处理,文件上传,验证等。拦截器是可配置与重用的,可以将一些通用的功能如:登录验证,权限验证等置于拦截器中以完成一些Java Web项目中比较通用的功能
d)、易于测试
Struts2的Action都是简单的POJO,这样可以方便的对Struts2的Action编写测试用例,大大方便了Java Web项目的测试。
e)、模块化
Struts2已经把模块化作为了体系架构中的基本思想,可以通过三种方法来将应用程序 模块化:
将配置信息拆分成多个文件
把自包含的应用模块创建为插件
创建新的框架特性,即将与特定应用无关的新功能组织成插件,以添加到多个应用中去。
f)、全局结果与声明式异常
为应用程序添加全局的Result,和在配置文件中对异常进行处理,这样当处理过程中出现指定异常时,可以跳转到特定页面,这一功能十分实用。
所需核心jar包介绍:
a)、commons-fileupload-1.3.jar: 文件上传组件,2.1.6版本后必须加入此文件。
b)、commons-io-2.0.1.jar: IO输入输出流组件,主要完成文件的读写功能。
c)、commons-lang3-3.1.jar:跟java.lang这个包的作用类似,Commons Lang这一组API也是提供一些基础的、通用的操作和处理,如自动生成toString()的结果、自动实现hashCode()和equals()方法、数组操作、枚举、日期和时间的处理等等
d)、commons-logging-1.1.3.jar:Apache Commons包中的一个,包含了日志功能。这个包本身包含了一个Simple Logger,但是功能很弱。在运行的时候它会先在CLASSPATH找log4j,如果有,就使用log4j,如果没有,就找JDK1.4带的 java.util.logging,如果也找不
到就用Simple Logger。
f)、freemarker-2.3.19.jar:一个模板引擎,一个基于模板生成文本输出的通用工具
g)、log4j-1.2.17.jar:日志框架
h)、ognl-3.0.6.jar: 对象图导航语言(Object Graph Navigation Language),它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段
类型转化等功能。
i)、struts2-core-2.3.15.1.jar: Struts2框架的核心类库。
j)、struts2-spring-plugin-2.3.15.1.jar:将action交给spring来管理的核心jar文件
k)、xwork-core-2.3.8.jar:Xwork核心类库,Struts2在其上构建。
3、Spring
简介:
Spring是一个开源框架,它由RodJohnson创建。它的诞生是为了简化企业级开发。说的spring势必提到EJB,和EJB相比spring是一个轻量级容器,用过EJB的开发者应该知道当我们写一个简单的Web Project时,就需要写不少java文件和xml文件。
Spirngl里面重要的两个概念一个是IOC/DI (Inversion of Control,反转控制),另一个是AOP(Aspect-Oriented Programming,面向切面编程),在学习的过程中,如果把这两个学完的话,你差不多就把spring学完了
优点:
a)、使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑
b)、可以提供众多服务,事务管理,WS等。
c)、AOP的很好支持,方便面向切面编程。
d)、对主流的框架提供了很好的集成支持,如Hibernate,Struts2,JPA等
e)、Spring DI机制降低了业务对象替换的复杂性。
f)、Spring属于低侵入,代码污染极低。
g)、Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部
所需核心jar包:
a)、aspectjrt.jar: 处理事务和AOP所需的包
b)、aspectjweaver.jar:与AOP有关
c)、cglib-nodep-2.1_3.jar:cglib代理 实现AOP的一种方式 ; 和他对应的是DynaProxy(java动态代理)
d)、common-annotations.jar:spring的注解包,
e)、commons-dbcp.jar:支持BasicDataSource来配置数据库连接
h)、commons-logging.jar:ASF出品的日志包,struts2 2、spring、hibernate框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录
g)、commons-pool.jar:支持BasicDataSource来配置数据库连接
h、spring.jar:spring.jar 是包含有完整发布模块的单个jar 包。但是不包括mock.jar, aspects.jar, spring-portlet.jar...
4、SSH
Struts+hibernate+spring的整合这里不再写啦。