MIS系统中细粒度实体bean问题解决方案的研究(1)(2)
2014-07-03 01:03
导读:图2 某MIS系统学生信息管理模块实体关系图3.2 细粒度实体bean问题 在EJB应用时的一个常用经验是把对象模型直接映射到实体bean,也就是说,对象模型中的每

图2 某MIS系统学生信息管理模块实体关系图3.2 细粒度实体bean问题 在EJB应用时的一个常用经验是把对象模型直接映射到实体bean,也就是说,对象模型中的每个类被直接转换成一个实体bean。随着企业bean数目的增加,容器和网络负载也会同步增加。这类映射也把表间关系(又称主关键字/外部关键字)实现为实体bean到实体bean的关系。这将会对应用的性能产生负面的影响。 对象模型直接映射到实体bean的设计方法对于实体关系比较简单的模块(如前述系统B端中的用户登录模块、教师信息模块、培养方案查询、课程查询等)的设计实现是最佳的。因此这些模块开发时使用了容器管理持久化CMP(Container Managed Persistence)实体bean技术对所用到的表进行了映射,原因是这些数据结构相对简单,数据单纯,不需要进行非常复杂、多样的查询,系统对数据表的操作不频繁,通常情况下对性能不敏感,故采用了CMP实体bean技术。CMP中只提供最基本的查询方法,所有的程序逻辑都封装在对应的会话Bean中,会话Bean和CMP一同部署,故可以采用本地接口访问实体Bean,提高效率。客户端仅仅与会话Bean进行交互(会话外观设计模式)。该设计的好处是隐藏了数据逻辑,MVC的结构非常清楚,后期的数据维护也比较简单。 但是对于像学生信息管理模块和学生选课管理这样实体关系复杂,对象数目众多的模块来说,将导致大量的细粒度实体bean。将严重影响应用的可扩展性,故使用bean管理的持久性BMP(Bean Managed Persistence)实体bean技术,但需要开发人员编写持久性代码而容器只是确定何时执行该代码。 在学生信息模块中(如图2所示),三种基本信息表(GSBaInf,USBaInf,CSUSBaInf)与其对应的家庭成员社会关系(GSFamSoRel,USFamSoRel,CSUSFamSoRel)、学习工作经历(GSLeWoExp,USLeWoExp,CSUSLeWoExp)、奖惩记录(GSRePuRec,USRePuRec,CSUSRePuRec)、学籍变动记录(GSStaChgRec,USStaChgRec,CSUSStaChgRec)、班级(Cla)、研究方向(StudDir)之间的表关系如果直接映射到实体bean时,会产生很多问题,也就是说细粒度实体bean会影响许多领域:一是影响实体关系,把对象模型直接映射到实体bean,会将对象间的关系转换为实体bean之间的关系。结果是一个实体bean往往包含或持有对其它实体bean的远程应用。这样在增加代码的复杂性之外,它还会降低系统的灵活性;二是影响可管理性,细粒度实体bean会导致系统中存在大量的实体bean。容器会创建大量对象来支持每个实体bean实例。大量的实体bean会产生更多需要维护的代码和类。这样会对应用程序的性能产生负面影响;三是影响网络性能,细粒度实体bean潜在地有更多的实体bean之间的关系,关系数的增加肯定会导致远程调用的增加,结果是由于网络负载而降低系统的可扩展性;四是影响数据库模式依赖,当实体bean是细粒度时,每个实体bean实例通常都被看作数据库中的一行,客户端使用这些细粒度实体bean时,它们实际上操作在数据库中的行层次,则客户端就变得对数据库模式很依赖。4 在MIS系统中的解决方案4.1 把实体bean设计并实现成具有根和依赖对象的粗粒度对象——复合实体4.1.1 复合实体及其相关概念 如果把学生信息模块的对象模型直接映射到实体bean,将导致大量的细粒度实体bean。从而带来网络负载、数据库模式依赖及管理复杂等问题。 为解决细粒度实体bean问题,在学生信息模块EJB的设计中采用复合实体的设计模式。 复合实体(Composite Entity)表示、模拟和管理一组相互管理的持久性对象。持久性对象是保存在某种类型数据存储中的对象。多个客户端通常共享持久性对象。持久性对象可以分成两类:粗粒度对象和依赖对象。使用“复合实体”对于一组相互联系的持久性对象进行建模、表示和管理,而不是按照个别细粒度实体 Bean 表示它们。复合实体 Bean 代表一个由一组对象构成的图。通过复合实体模式,可以减少数据库模型的依赖性、提高网络性能、消除实体间的依赖性。共2页: 1 [2] 下一页 论文出处(作者):