元数据(metadata)在企业应用开发中的作用
2004-08-12 10:07
435 查看
元数据(metadata)介绍:
Metadata(元数据),它是“关于数据的数据”(data about data),近年来在软件设计中Metadata有广泛的应用。
在编程中,元数据不是被处理的对象,而是通过改变元数据的一些“值”来改变程序的运行的数据。
可以“解释”程序的运行时,不同的元数据值可以让同一段程序有不同的运行结果。
元数据(metadata)应用:
在以前的工作中,经常遇到这样的问题,
SqlServer数据库中一个表如下:
CREATE TABLE [dbo].[DProfile] (
[Profile_ID] [int] IDENTITY (1, 1) NOT NULL ,
[ProfileName] [varchar] (250) COLLATE Chinese_PRC_CI_AS NULL ,
[OtherInfo] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[ValidateStatus] [int] NULL
) ON [PRIMARY]
为其定义一个实体类:
namespace E_Commerce.Data
{
/// <summary>
/// 卡属性基本信息实体
/// </summary>
public class DProfileInfo
{
/// <summary>
/// 其他信息
/// </summary>
public string OtherInfo
{
get
{
/*Begin Template
return mOtherInfo;
/*End Template Expansion{9D774738-E901-427A-86E7-EF2715768C17}*/
}
set
{
/*Begin Template Expansion{F6A2B75D-D01B-47B0-B65D-E62E43286DDC}*/
mOtherInfo = value;
/*End Template Expansion{F6A2B75D-D01B-47B0-B65D-E62E43286DDC}*/
}
}
/// <summary>
/// 卡属性ID
/// </summary>
public int Profile_ID
{
get
{
/*Begin Template Expansion{2230D3C4-9766-4778-9203-5063D88B468C}*/
return mProfile_ID;
/*End Template Expansion{2230D3C4-9766-4778-9203-5063D88B468C}*/
}
set
{
/*Begin Template Expansion{0A1C9514-4DDB-4079-BE19-8DACE24CD454}*/
mProfile_ID = value;
/*End Template Expansion{0A1C9514-4DDB-4079-BE19-8DACE24CD454}*/
}
}
/// <summary>
/// 卡属性名称
/// </summary>
public string ProfileName
{
get
{
/*Begin Template Expansion{A43788B8-60A0-4882-9C51-A3DEE710FE78}*/
return mProfileName;
/*End Template Expansion{A43788B8-60A0-4882-9C51-A3DEE710FE78}*/
}
set
{
/*Begin Template Expansion{829EEF0A-A18A-4492-BE57-67C4C57ACFC3}*/
mProfileName = value;
/*End Template Expansion{829EEF0A-A18A-4492-BE57-67C4C57ACFC3}*/
}
}
private string mOtherInfo;
private int mProfile_ID;
private string mProfileName;
}
}
在开发和实际运行过程中经常发生这样情况,经过一段时间用户的实际情况变化了,可能想要在上面的实体中和其所对应的数据库的Table中增加一个或多个Field。我们只能修改这个数据实体,在代码开发完成后,进行这样的修改是麻烦而且可能相当危险的。
设想一下现在的情况,由于种种原因需要更改上面的数据结构,我们打算增加两个字段“Price”“CreateTime”,有什么方法可以让数据实体容易适应的进行这种变化呢
两种方法:
1) 在表DProfile中增加一个描述所增加的Field的元数据字段名称为FieldsMetaInfo,数据类型可以定义成Text类型或image等二进制类型,在这个字段中定义一个XML格式的文档描述和存储所新增加的Field。
格式可能是这样的
<Field Name="Price" FromBaseType="TRUE" Type="Text" DisplayName="价格" Required="TRUE" MaxLength="255" DefaultValue=”0” >123.45</Field>
<Field Name=" CreateTime " FromBaseType="TRUE" Type="DateTiem" DisplayName="价格" Required="TRUE" >2004-01-01</Field>
这个新添加的字段记录未来可能增加的field的数据类型信息和数据信息等其它信息
2) 增加两个表
在表中存储新增加的Field信息
表ProfileFields
ID int
FieldName nvarchar(50)
FieldType nvarchar(50)
表ProfileFieldsValue
ID int
ProfileID int
ProfileValue varchar(50)
ProfileFields表存储增加的Field名称类型等信息
表ProfileFieldsValue表存储对应Filed的值
在数据实体类中增加一个自定义类型的属性返回存储在源数据结构中的数据
可以是Hashtable类型,也可以是自定义的其它集合类型
Private Hashtable metaFieldsList;
自定义结构用来方便的存储和更新
元数据(metadata)数据存储结构:
元数据有许多存储格式,其中最多使用的是xml格式。
xml最适合用来存储元数据,易与使用和解析。
元数据(metadata)在o-r映射中所起的作用:
Metadata(元数据),它是“关于数据的数据”(data about data),近年来在软件设计中Metadata有广泛的应用。
在编程中,元数据不是被处理的对象,而是通过改变元数据的一些“值”来改变程序的运行的数据。
可以“解释”程序的运行时,不同的元数据值可以让同一段程序有不同的运行结果。
元数据(metadata)应用:
在以前的工作中,经常遇到这样的问题,
SqlServer数据库中一个表如下:
CREATE TABLE [dbo].[DProfile] (
[Profile_ID] [int] IDENTITY (1, 1) NOT NULL ,
[ProfileName] [varchar] (250) COLLATE Chinese_PRC_CI_AS NULL ,
[OtherInfo] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[ValidateStatus] [int] NULL
) ON [PRIMARY]
为其定义一个实体类:
namespace E_Commerce.Data
{
/// <summary>
/// 卡属性基本信息实体
/// </summary>
public class DProfileInfo
{
/// <summary>
/// 其他信息
/// </summary>
public string OtherInfo
{
get
{
/*Begin Template
return mOtherInfo;
/*End Template Expansion{9D774738-E901-427A-86E7-EF2715768C17}*/
}
set
{
/*Begin Template Expansion{F6A2B75D-D01B-47B0-B65D-E62E43286DDC}*/
mOtherInfo = value;
/*End Template Expansion{F6A2B75D-D01B-47B0-B65D-E62E43286DDC}*/
}
}
/// <summary>
/// 卡属性ID
/// </summary>
public int Profile_ID
{
get
{
/*Begin Template Expansion{2230D3C4-9766-4778-9203-5063D88B468C}*/
return mProfile_ID;
/*End Template Expansion{2230D3C4-9766-4778-9203-5063D88B468C}*/
}
set
{
/*Begin Template Expansion{0A1C9514-4DDB-4079-BE19-8DACE24CD454}*/
mProfile_ID = value;
/*End Template Expansion{0A1C9514-4DDB-4079-BE19-8DACE24CD454}*/
}
}
/// <summary>
/// 卡属性名称
/// </summary>
public string ProfileName
{
get
{
/*Begin Template Expansion{A43788B8-60A0-4882-9C51-A3DEE710FE78}*/
return mProfileName;
/*End Template Expansion{A43788B8-60A0-4882-9C51-A3DEE710FE78}*/
}
set
{
/*Begin Template Expansion{829EEF0A-A18A-4492-BE57-67C4C57ACFC3}*/
mProfileName = value;
/*End Template Expansion{829EEF0A-A18A-4492-BE57-67C4C57ACFC3}*/
}
}
private string mOtherInfo;
private int mProfile_ID;
private string mProfileName;
}
}
在开发和实际运行过程中经常发生这样情况,经过一段时间用户的实际情况变化了,可能想要在上面的实体中和其所对应的数据库的Table中增加一个或多个Field。我们只能修改这个数据实体,在代码开发完成后,进行这样的修改是麻烦而且可能相当危险的。
设想一下现在的情况,由于种种原因需要更改上面的数据结构,我们打算增加两个字段“Price”“CreateTime”,有什么方法可以让数据实体容易适应的进行这种变化呢
两种方法:
1) 在表DProfile中增加一个描述所增加的Field的元数据字段名称为FieldsMetaInfo,数据类型可以定义成Text类型或image等二进制类型,在这个字段中定义一个XML格式的文档描述和存储所新增加的Field。
格式可能是这样的
<Field Name="Price" FromBaseType="TRUE" Type="Text" DisplayName="价格" Required="TRUE" MaxLength="255" DefaultValue=”0” >123.45</Field>
<Field Name=" CreateTime " FromBaseType="TRUE" Type="DateTiem" DisplayName="价格" Required="TRUE" >2004-01-01</Field>
这个新添加的字段记录未来可能增加的field的数据类型信息和数据信息等其它信息
2) 增加两个表
在表中存储新增加的Field信息
表ProfileFields
ID int
FieldName nvarchar(50)
FieldType nvarchar(50)
表ProfileFieldsValue
ID int
ProfileID int
ProfileValue varchar(50)
ProfileFields表存储增加的Field名称类型等信息
表ProfileFieldsValue表存储对应Filed的值
在数据实体类中增加一个自定义类型的属性返回存储在源数据结构中的数据
可以是Hashtable类型,也可以是自定义的其它集合类型
Private Hashtable metaFieldsList;
自定义结构用来方便的存储和更新
元数据(metadata)数据存储结构:
元数据有许多存储格式,其中最多使用的是xml格式。
xml最适合用来存储元数据,易与使用和解析。
元数据(metadata)在o-r映射中所起的作用:
相关文章推荐
- 元数据(metadata)在企业应用开发中的作用
- 元数据(metadata)在企业应用开发中的作用
- java数据库编程——元数据(metadata)+web 与企业应用中的连接管理
- 《Spring 3.x 企业应用开发实战》学习笔记 第四章
- Silverlight企业应用快速开发平台框架设计(三)分析-页面模型
- Spring boot入门实例 简易登录(精通Spring+4.x++企业应用开发实战 学习笔记二)
- 学习《spring 3.x企业应用开发实战》之SpringMVC
- 学习《spring 3.x企业应用开发实战》之基于@AspectJ和Schema的AOP
- 微软企业应用开发三大方向:跨平台、开放/开源与DevOps
- spring 3.x 企业应用开发实战 PDF 陈雄华 完整版 路径
- Spring 3.x企业应用开发实战(10)----AOP切面
- jBPM开发企业流程应用之在Tomcat上部署流程引擎及控制台
- OSGI企业应用开发(十一)Bundle资源获取途径
- Spring 3.x企业应用开发实战(11)----基于@AspectJ配置切面
- 关于数据建模(面向ER)和领域模型建模(面向OO)在企业应用中的作用的讨论
- 问题:如何qDebug自己开发的运行在BlackBerry 10的Work Space中的企业应用呢?
- OSGI企业应用开发(十三)OSGI Web应用开发(二)
- Spring 3.x企业应用开发实战(14)----事务
- 精通Spring 4.x企业应用开发实战——IoC(三)
- 利用Struts2+Spring3+Hibernate4+ExtJS4.2开发企业富客户端商业应用