架式是一个松耦合的框架,框架的部分耦合度被设计为最小,在各个层次上具体选用哪个框架取决于开发者的需要。
2.5数据持久层框架Hibernate
Hibernate是目前最流行的开源ORM(Object/RelationMapping对象/关系映射)框架,该框架将iava对象与关系型数据之间做了个自动映射,解决了设计面向对象程序中不同对象之间的关系和数据库表格之间的关系无法准确匹配的问题。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从Java类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操作数据库,Hibernate可以大大减少操作数据库的工作量。另外,Hibernate可以利用代理模式来简化载入类的过程,这将大大减少利用HibernateQL从数据库提取数据的代码的编写量,从而节约开发时间和开发成本Hibernate可以和多种Web服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。
Hibernate接口位于业务层和持久化层,如图2-1所示:
图2-1 Hibernate核心接口的层次架构关系
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制,下面
13
对这五个核心接口分别加以介绍。
Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。
SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
Transaction接口:Transaction接口负责事务相关的操作。它是可选的,可发人员也可以设计编写自己的底层事务处理代码。
Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
2.6 MVC的介绍
2.6.1 MVC如何工作
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
M—模型
模型(Model)表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像EJBs和ColdFusionComponents这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
14
V—视图
视图(View)是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括MacromediaFlash和像XHTML,XML/XSL,WML等一些标识语言和Webservices。
如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
C—控制器
控制器(Contrller)接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。
现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。 2.6.2 MVC的优点
第一,分工明确:使用MVC可以把数据库开发,程序业务逻辑开发,页面开发分开,每一层都具有相同的特征,方便以后的代码维护。它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上;
第二,松耦合,视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。这一点比较重要,像实际应用的时候,我们还会把model模块细分为:数据库抽象层,数据操作层,业务逻辑层。这些也都是出于一个送耦合的考虑,改动其中一部分,不会影响到另一部分。
15
第三,重用性高。像多个视图能够共享一个模型,不论你视图层是用flash界面或是wap界面,用一个模型就能处理他们。将数据和业务规则从表示层分开,就可以最大化从用代码。
2.7 POI的介绍
ApachePOI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
结构:
HSSF——提供读写Microsoft Excel XLS格式档案的功能;
XSSF——提供读写Microsoft Excel OOXML XLSX格式档案的功能; HWPF——提供读写Microsoft Word DOC格式档案的功能; HSLF——提供读写Microsoft PowerPoint格式档案的功能; HDGF——提供读Microsoft Visio格式档案的功能; HPBF——提供读Microsoft Publisher格式档案的功能; HSMF——提供读Microsoft Outlook格式档案的功能。
2.8 数据库及SQL语言简介
使用数据库管理员工各种信息,具有以下几个优点:
第一,数据库的开放性。SQLServer一般只能运行在windows上,相对地来说,开放性不是很好,而对于数据库管理来说,操作系统的稳定性是非常重要的。Windows9X系列产品主要侧重桌面应用,NTserver一般主要对中小型企业适用,并且windows平台的可靠性、安全性以及伸缩性都是相当有限的。尤其在处理拥有大数据量的关键业务时,它不像UNIX那样经得起考验。Oracle几乎能在所有的主流平台运行,当然也包括windows的系统,并且它能够完全支持所有工业标准,其采用完全开放策略,可以允许客户选择最适合组织管理的解决方案,并能够对开发商进行全力以赴的支持。而DB2也可以在所有主流平台上运行,同样也可以支持windows,它特别适合海量的数据。DB2在企业中应用是最为广泛的。例如,全球500家强企业中,85%的企业都使用了DB2数据库服务器。然而,在我国国内运用的情况不是很好。
第二,数据库的可伸缩性和并行性。实际上,SQLserver并行实施与共存的模型并不十分成熟,它对处理日益增多的用户数以及数据卷来说比较困难,表
16
现出很有限的伸缩性。Oracle的平行服务器通过允许一组结点能共享同一簇中的工作来进行windows工作能力的扩展,提供了高可用性以及高伸缩性簇的解决方案。假如出现windowsNT不能满足的需要,用户就可以把数据库转移给UNIX系统。同时,DB2系统还具有很好的并行性。DB2可以把数据库管理扩充到并行和多节点的环境中。数据库分区是数据库的主要部分,它包含自己的数据、索引、配置文件以及事务日志等。因此,数据库分区时常也被称为节点或者数据库节点。
第三,数据库的安全性。相对来说,SQLserver没有得到过任何的安全证书;而Oracle Server与DB2则均获得过最高认证级别ISO标准的认证。
第四,数据库的性能。从性能上看,SQLServer在多用户时性能不佳,Oracle性能最高,它能保持windowsNT下TPC-D与TPC-C的世界记录。DB2只适用于数据仓库以及在线处理事物。
第五,数据库的客户端支持及应用模式。SQLServer系统的C/S体系结构,能够通过ADO、DAO、OLEDB、ODBC来进行连接。Oracle采用多层次的网络计算,可以支持多种工业的标准,能够通过ODBC、JDBC、OCI等来与网络客户进行连接。而DB2则是跨平台的多层次结构,它支持ODBC、JDBC等客户的需求。
第六,数据库的操作简便。从操作上来看,SQLServer的操作相对来说比较的简单。Oracle操作相对的复杂些,它能够同时提供GUI与命令行,并且在windowsNT与UNIX下的操作相同。DB2的操作相对很简单,能同时提供GUI与命令行,并且在windows NT和UNIX下的操作是相同的。
第七,数据库的使用风险性。从使用风险上来分析,SQLserver的系统完全是重写的软件代码,它经历了长期测试以及不断延迟,很多功能仍然需要想当充裕的时间来加以证明,它对早期产品显得不十分兼容,在使用时需要冒一定风险。而Oracle则有着长时间开发的经验,可以实现完全向下兼容,它能得到广泛应用,并且在使用的时候完全没有风险。同时,DB2在各种大型企业管理实践中得到了广泛应用,向下兼容性很好,风险比较小。虽然SQLserver在很多方面比不上oracle和db2,但是它的价格相对很低,其性能也完全能满足中小企业的应用,所以,市场运用环境很好。
17