3.3.1 XML格式的元数据
任何ORM的解决方案都应该提供一种易读的、容易编辑的映射文件格式,而不仅仅提供一个GUI图形工具。当下流行的对象/关系元数据格式都支持XML。使用XML格式的文件可以提供如下好处:首先它是轻量级的,提供很好的易读性,能够进行版本控制,可以在部署阶段定制。
但是XML格式文件真的是最好的选择吗?Java社团中就反对XML文件中使用了过多的反斜线。每个框架和服务器都需要使用其特定的XML描述符。
在我们看来,使用反斜线有三个主要的原因:
许多现存的元数据可读性和可编辑性都很差,究其原因就是缺乏对于属性元素默认值的支持。
元数据为基础的解决方案经常被滥用。元数据并不比Java代码更容易维护,过多的元数据会造成混乱。
一般的XML编辑器,尤其是那些IDE提供的,其编辑的质量远远比不上对于Java代码的支持。更糟糕的是,很多情况下这样的XML并不提供DTD,这样就无法进行验证。另外一个问题就是DTD的定义太通用了,以至于不会起到实际的作用。
然而,并不能就这样忽略ORM对于基于文本的元数据的使用需求。Hibernate就充分到了元数据的这些问题。其定义的元数据提供了很好的可读性以及默认值。当没有配置属性值的时候,Hibernate会利用反射机制找到类来完成默认值的配置。Hibernate还提供了完成的DTD。最新的IDE都已经更好的支持XML文件的编辑,包括动态的校验甚至包括自动完成配置的功能。如果这些仍然无法满足你的要求,那么我们将在第九章介绍一些工具来生成Hibernate映射文件。
让我们来看一下Hibernate中的映射文件。我们之前创建了Category类,现在需要把它映射到CATEGORY表中。为了完成这个配置,我们使用了列表3.4中的映射文件。
(1)每个Hibernate映射文件都应该声明DTD,它用来验证XML的语法是否正确。
(2)所有映射配置都放在<hibernate-mapping>元素之间,你可以随意配置的类,至于其他的配置我们将在后面说明。
(3)类category映射到CATEGORY表。表中的每一行都代表了Category的一个实例。
(4)至今为止我们并没有讨论对象标识的概念,所以你可能会对这种映射方式感到奇怪。这个主题将在3.4中讨论。为了理解这个问题,你必须知道CATEGORY表中的每一条记录都会有一个主键来对应内存中的对象的实例。<id>属性就是用来定义对象标识的。
(5)属性type映射到数据库的name列。需要注意的是type使用的是Hibernate内置的String类型,而不是java的类型或者数据库的类型。你可以把它理解为映射类型。这些都将在第六章
相关文档:
Standards
"DTD" was the first formalized standard, but is rarely used anymore.
"XDR" was an early attempt by Microsoft to provide a more comprehensive standard than DTD. This standard has pretty much been abandoned now in favor of XSD.
"XSD" is currently the de facto standard for describing XML d ......
优点:由于xml是可扩展的,所以xml可以描述来自多种应用程序的数据。
通过粒度更新来提高性能。XML 允许粒度更新。开发人员不必在每次改动时都发送整个结构化数据集。有了粒度更新后,只有改变的元素才从服务器发送到客户机。 ......
Xml, xslt, xsd, xpath描述一下
XML: Extensible Markup Language扩展标记语言,用来处理结构化文档。
XSLT: XSL Transformations。用来将一种XML转换成另外一种XML文档。也可以将XML转换成XHTML或者HTML在浏览器中显示。
XSD: XML Schemas Definition。用来定义XML文档的结构。XML Schema 是DTD(Document Type Definiti ......
解析:
CMarkup xml;
CString strChanText, strChanType;
xml.Load("MyXml.xml");
xml.ResetMainPos();
if (!Chan.FindElem("TreeOrg"))
{
return;
}
if (xml.IntoElem())
{
xml.FindEle ......
第一步:将XML编辑器设置默认为Myeclipse edit
window__Preferences__General____Editors_____File Associations
找到*.xml,选择Myeclipse Xml editor,点default
第二步:配置dtd或者xsd文件
Window → Preferences... → MyEclipse → Files & Editors → ......