。
1.2持久层设计模式1.2.i设计模式背景 模式在现实生活中随处可见,它是成功经验的总结和复用。
模式思想起初形成于建筑学,Alexander对于模式的定义为:在某种经常重现的背景下,对某种特定问题的解决方法〔4】。
这里,Alexander给出了模式的三大要桑【5】: (1)背景(context) 那些适台应用该模式的可重现情形. (2)问题(problem) 出现在背景中的一系列影响力,即日标和约束。
(3)解决方案(solution) 4持九屉设计模式在增值服务网站系统的研究与应用 第1章综述 可用于解决问题的经典设计形式或设计规财。
模式的基本特性有: (1)模式可以解决实际问题 模式能够解决一个特定的具体问题,而不是抽象的原则和策略。
(2)模式是经受过考验的概念 模式有实际解决问题的记录,而不只是理论上的思索和推导。
(3)模式中的解决方案不是显而易见的 某些求解技术(如设计风范和方法)根据原则直接推导出问题解,但模 式问接地产生问题解一对复杂问题必须采用这种方法。
(4)模式表达了一种关系 模式不仅描述了模块,而且描述了更深层的系统结构和机制。
(5)模式具有很强的人文因素 最佳模式通常具有鏖好的美感兼兼容性。
模式有不l司的领域,建筑领域有建筑模式,软件设计领域也有设计模式。
模式也不断地被应用到软件工程的各个方面。
在诸如开发组织,软件处理.项日配置管理等方面,都可以看到模式的影子,但至今得到最深研究的仍是设计模式和代码模式。
设计模式提供一个用于细化软件系统的子系统或组件,或它们之间关系的图式。
具体到软件领域,就形成了对设计模式的狭义定义【6】。
可以简单的认为:设计模式就是解决某个特定的面向对象软件设计问题的特定方法【刀。
设计模式是为了解决某些场合存在的一般性设计问题,是关于类和相互通信的对象的抽象描述。
设计模式所表示的是构建软件时所发生的问题的成功解决方案,使人们可虬更加简单方便地复用成功的设计和体系结构。
将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路溉9,10,1 l】.UML也为设计模式的清晰表达提供了一种很好的方式【12】。
1.2.2数据访问模式 无论在什么样的应用领域,企业软件人员都要解决同样的数据访问问题。
以下是数据访问组件时遇到的一些常见问题【13】: 5持久层设计模式在增值服务网站系统的研究与应用 第l牵综述 (1)应用程序需要使用多种数据库产品。
(2)用户界面需要隐藏晦涩的数据库语义。
(3)数据库资源初始化非常慢。
(4)数据访问细节使应用程序难以开发与维护。
(5)应用程序需要缓存频繁访问的数据。
(6)多个用户需要并发访问相同的数据。
这些问题部有通用的解决方案。
一些方案非常直观,已经被成千上万的开发者独立地发现。
另一些则不那么明显,因为它们已经被融合在最健壮地数据访问方案中。
数据访问模式描述了解决这类共同设计问题的一般策略。
模式不一定要规定具体的实现,而是要描述一种有效的设计和结构,构成解决方案的基础【13】。
在CliRon Neck一书中,把数据访问模式分为以下几类〔13l: (1)解祸模式 该模式描述了其他应用程序逻辑从解耦数据访问代码的模式,这些模式 可以产生更清晰的应用程序代码,减少了仅和数据访问细节有关的修改 造成缺陷的可能性。
(2)资源模式 该模式捕述了有效关联数据库资源的模式。
(3)输入输出模式 该模式描述了简化输入输出操作的模式,在以物理形式表示的关系数据 和域对象表示之间使用一致的转换。
(4)缓存模式 该模式描述了实现战略性数据缓存的模式,解决数据访问优化和缓存开 销之间的折衷问题。
(5)并发模式 该模式描述了实现并发策略的模式。
在建立数据持久层框架尤其是。
爪M印piIIg部分,有很多专家发表过这方面的论文。
Micm∞fl也根据windows自身的特点,提供了很多持久层方案和技术,使之整合到其IDE中,以供开发人员使用【14】.在面向对象系统设计中,设计者 6持久层设计模式在增值服务阿站系统的研究与应用 第1章综述们都在考虑如何用一种很灵活和方便的方式把结构化的对象存储到持久层中,以提高系统的可靠性和容错能力【15,16。
17,l 8】。
1.2.3现今优秀框架系统的持久层实现 一个鲁捧的持久层设计是困难的,尽管很多问题的答案已经给出,但是如果要做的话,还需要很多的工作.如果完成了持久层的工作,还需要维护和支持的工作.在自己完成和购买一个的选择中,需要考虑操作可行性的问题【l 9】。
现今优秀的web应用框架很多,很多人在此作出了大量的研究〔20,21,22】。
也有很多优秀的持久层框架可以供人选择。
1.2.3.1 EJB EIB规范定义了以下三种不同类型的EJB类型:消息驱动FJB(MDB),会话EJB,实体Em〔23〕。
实体EJB表达的是一种持久存储的商业逻辑,通常存储于关系型数据库中。
其中实体EJB与关系型数据库有如下的相似之处: (1)实体EJB是持久的 它可以在应用程序的生命周期之外存在,甚至可以在EJB容器的生命周 期以外存在。
(2)实体EIB允许共享访问 多个客户端可以共享同一个实体EJB,而容器负责管理它们之间的同步。
(3)实体F3B有主键 主键用来确定实体FIB的一个唯一实例,利用它可以找lⅡ一个特定的持 久化实体。
(4)实体EIB有事务的概念 由于客户端能并发访问并修改它的数据,因此事务管理是非常重要的。
事务管理属性被显示地定义在部署描述文件中,而容器负责管理事务的 边界. 要实现对象一关系映射,那实体EJB必须能提供插入、更新、查询、删除的操作。
而用于管理实体EJB对象与数据源之间的映射的过程被称为持久化。
换句话说,持久化是一个将信息写入外部数据源的一个过程。
EJB规范定义了实体EJB的两种持久化方式:Be’an自身管理的持久化(BlvlP)和容器管理的持久化 7持九层设计模式在增值服务同站系统的研究与应用 第1章综述 (CMP)。
如果选用BMP,那必须在代码中负责维护所有的持久化开发。
那么所有的数据层访问代码都必须由开发者来完成,这种方式能带给开发者更大的灵活性。
如果选用CMP,那不用编写数据层访问代码,EJB容器将会管理所有的持久化开发工作。
因此.数据层访问代码与数据源之间是松耦合的。
这能减轻开发者的代码编写量,并且使得CMP能部署到不同厂商的应用服务器中,也不必关心具体的数据源。
然后EJB的问题在于其违背了“帕累托法则”,即为了满足少数情况下的特殊要求,给大多数使用者强加了不必要的复杂性,比如分布式应用,与实际应用无关然后要遵循的复杂规范等【24】。
EJB因其重量级应用而得到人们的诟病,之后推出的EJB3.0对其进行了很大的改进,EJB3.O采纳了如TopLink和Hi/”raate轻量级的持久化模式来简化容器持久化管理。
Sun公司在之后的javaEE 5.0中引进了EJB3.0作为其重要的一个组成部分。
1.2.3.2 Hibernate Hibernate是一个开放源代码的O/R Mapping(对象关系映射框架),其对YDBC进行了轻量级的对象封装,使Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate采用ORM映射机制的持久层开发工具,其是JAVA应用和关系数据库之前的桥梁,负责JAVA对象和关系数据之间的映射。
其内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API。
Hibernate的工作方式很简单,不会强迫开
上一篇:
宠物犬商店_论文
下一篇:
2018年汽车自驾运动营地攻防箭大赛总决赛圆满落幕