元数据引擎设计思考

元数据引擎设计思考

ID:33399806

大小:149.50 KB

页数:25页

时间:2019-02-25

元数据引擎设计思考_第1页
元数据引擎设计思考_第2页
元数据引擎设计思考_第3页
元数据引擎设计思考_第4页
元数据引擎设计思考_第5页
资源描述:

《元数据引擎设计思考》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、javameta-date元数据7.2 关于元数据系统开发中存在各种各样的数据,比如Tom是一个年龄为30岁的男性员工、Liliy是一个21岁的女性员工、这张报表是今年第三季度的利润表、那张报表是今年上半年的销售波动图、对话框上有三个按钮控件、窗口上有一个多行文本控件和一个保存按钮、这个WebService提供了股票实时情况查询的服务、那个WebService提供了查询天气预报的服务。以上数据存在很多共性的特征,这些特性都可以通过某种形式进行抽象。对于“Tom是一个年龄为30岁的男性员工”、“Liliy是一个21岁的女性员工”,在数据库级别就会抽象成含有

2、FIdVarchar(50)、FNameVarchar(50)、FAge(int)、FSex(int)四个字段的数据库表T_Employee,在Hibernate中就被抽象成含有id、name、age、sex四个字段的JavaBean以及对应的hbm配置文件。这些数据是平台无关的,在描述“Tom是一个年龄为30岁的男性员工”这条数据的时候,它即可以是保存在数据库中的,也可以是保存在XML配置文件中的,甚至有可能只是写在一张便条上的。与此相反的是,对这些数据的抽象方式大都是与特定平台相关的,是无法移植的。比如要把数据的存储方式由数据库改为XML文档,那么就

3、必须针对XML文件的存取特点重新进行抽象。由于抽象方式是平台相关的,这些抽象出来的模型就不具有通用性,无法通过统一的方式来读取它们。比如要读懂T_Employee这张表中的字段的含义就要去查阅数据字典,要读懂便条上的“Tom30m”就要去询问写便条的人。元数据(MetaData)是MDA中非常重要的概念。它通过统一的、平台无关的、规范的方式对数据的模式特征进行描述,通过一个模型结构来表达通用的信息,它集设计模型、开发模型与运行模型为一体。元数据具有如下几个作用。(1)元数据是独立于平台的,无论使用什么技术平台,元数据本身是不受影响的,这保证了先期工作成果

4、的效用最大化。(2)元数据是生成平台相关模型的基础,可以使用代码生成器等工具将元数据转换成平台相关代码。(3)元数据为运行时系统提供了统一的可读的系统模型,系统运行时可以使得实体对象通过运行时元数据模型来得知自身的结构、自身的特征、在系统模型中的位置以及与其他对象之间的关系等。这样就可以从一个新的角度来观察、设计、开发系统。(4)元数据模型是系统运行不可或缺的部分,如果直接修改平台相关代码而不修改元数据,就会造成系统运行异常,这就强迫保证元数据模型与代码同步,保证了设计模型和实现代码的一致性。(5)元数据本身就是一个设计模型。系统设计人员可以使用元数据进

5、行系统建模,在某种程度上元数据可以取代UML图等传统的设计模型。设计人员将设计完成的元数据模型交给开发人员,开发人员使用代码生成器将元数据转换成平台相关代码,然后就可以基于这些平台相关代码进行开发了。元数据起到了设计人员和开发人员沟通桥梁的作用,设计人员的工作立即就可以转换为可以运行的平台相关代码。7.2.1 元数据示例枚举类型在不同的系统中有不同的表示方式,而且有不同的模型描述方式(即枚举有哪些项、项的值是多少等信息),有的平台还没有提供足够的模型描述方式。客户类型包括:普通客户、会员客户、VIP客户。在JDK1.5中可以表示为enumCustomer

6、TypeEnum{Normal,Member,VIP},取得CustomerTypeEnum枚举类型中定义的所有枚举项的方法为CustomerTypeEnum.values(),取得“Normal”这个字符串对应的枚举项的方法为Enum.valueOf(CustomerTypeEnum.class,"Normal")。在JDK1.4中使用ApacheCommons包提供的Enum类可以表示为:publicclassCustomerTypeEnumextendsorg.apache.commons.lang.enums.Enum{   publicstat

7、icDataTypeEnumNormal=newDataTypeEnum("Normal");   publicstaticDataTypeEnumMember=newDataTypeEnum("Member");   publicstaticDataTypeEnumVIP=newDataTypeEnum("VIP");   privateDataTypeEnum(Stringname)   {       super(name);          }}取得CustomerTypeEnum枚举类型中定义的所有枚举项的方法为EnumUtils.get-E

8、numList(CustomerTypeEnum.class),取得“Norma

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。