170907_Spring英文文档阅读(三)_2.2 Data Access/Integration_spring-oxm

来源:互联网 发布:中科院软件所 编辑:程序博客网 时间:2024/05/18 00:05

这里写图片描述

谷歌翻译: spring-oxm模块提供了一个支持Object / XML映射实现的抽象层,如JAXB,Castor,XMLBeans,JiBX和XStream

Provides

The spring-oxm module provides an abstraction layer:

spring-oxm模块提供了一个抽象层,什么叫做抽象层?

抽象是把事物的个别特征去掉,取其共同点,去代表或说明同一类的事物,如果想对抽象过程进一步理解,可以阅读《Java编程思想》中的“1.1节 抽象过程”那么spring-oxm模块对哪一类事物进行了抽象呢?

Supports

that supports Object/XML mapping implementations:

从这句话我们可以看出“oxm”就是Objiect/XML mapping的缩写,即Object / XML映射,所以spring-oxm模块对oxm的实现进行了抽象,形成了一个层别,那什么是XML?这个支持oxm实现的抽象层又有哪些具体实例呢?

XML(Extensible Markup Language,可扩展标记语言)标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。“那可扩展”具体能扩展什么呢?

XML可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。这里的可扩展应该指的就是允许用户自定义。可以对文档和数据进行结构化处理,从而能够在部门、客户和供应商之间进行交换,实现动态内容生成,企业集成和应用开发。可扩展标记语言可以使我们能够更准确的搜索,更方便的传送软件组件,更好的描述一些事物。例如电子商务交易等。或许我们熟悉一个词HTML(HyperText Markup Language,超文本标记语言),那XML和HTML又有什么区别呢?

XML与HTML很相似,它们都是标准通用标记语言的子集。它们的不同之处在于HTML被设计用来显示数据,其焦点是数据的外观,所以HTML常被用来制作网页,而XML设计宗旨是传输和存储数据,其焦点是数据的内容,由于它可以被用户自定义,所以XML具有自我描述性

Such as

such as JAXB, Castor, XMLBeans, JiBX and XStream:

这些名词是我们所不太熟悉的,那JAXB, Castor, XMLBeans, JiBX and XStream到底是什么呢?

JAXB(Java Architecture for XML Binding,即用于XML绑定的Java体系结构) 是一个业界的标准,是一项可以根据XML架构产生Java类的技术。能够使用Jackson对JAXB注解的支持实现,既方便生成XML,也方便生成JSON,这样一来可以更好的标志需要转换为JSON对象的JAVA类。在这段话中出现了一个Jackson技术,那什么是Jackson呢?

Java下常见的Json类库有Gson、JSON-lib和Jackson等,Jackson相对来说比较高效。

Castor是ExoLab Group下的一个开源项目,它支持分布式目录事务处理和事件;提供处理XML、Directory、XADirectory的类库,提供从XML到JAVA类的转换机制。

XMLBeans是一个XML-Java绑定工具,利用它可以很方便地解析XML文档,它最强大的功能之一是可通过提供配置文件定制代码生成。

JiBX 是一个绑定 XML 数据到 Java 对象的框架。JiBX 用一个绑定定义文挡(binding definition document)来定义 XML 数据与 Java 对象转换的规则,这个文挡就是联系 XML 数据与 Java 对象之间的桥梁。

JiBX与JAXB的差别:和JAXB一样,都是属于xml绑定工具。不同于JAXB,JiBX的工作主要在于前期,也就是进行字节码绑定,这一部分基本上都是在编译器完成的。在运行期,不需要任何的配置,由于字节码已经嵌入java类中。而JAXB更多在于运行期绑定,通过元数据或者xsd文件进行解析绑定。相对于 JAXB来说,JiBX更加的快速以及灵活。不过,前期的编译工作还是需要花费一点时间熟悉。什么是字节码绑定和运行期绑定?什么是元数据?什么是xsd文件,这种文件的优点是什么?

字节码绑定和运行期绑定指的是前期绑定以及后期绑定,为什么分为前期后期呢?

前期绑定,在程序执行前根据编译时类型绑定,调用开销较小,如C语言只有前期绑定这种方法调用。但是如果方法中的形参是一个接口或者基类的引用时就不知道应该应该调用哪个方法。

后期绑定,是指在运行时根据对象的类型进行绑定,又叫动态绑定或运行时绑定。实现后期绑定,需要某种机制支持,以便在运行时能判断对象的类型,调用开销比前期绑定大。

那前期绑定和后期绑定有哪些实例呢?

详细的解释见《Java编程思想》中“8.2.1 方法调用绑定”,Java中的static方法和final方法(private属于final方法)属于前期绑定,子类无法重写final方法,成员变量(包括静态及非静态)也属于前期绑定。除了static方法和final方法之外的其他方法属于后期绑定,运行时能判断对象的类型进行绑定。那XML和前后期绑定又有什么关系呢?

或许这里可以简单的理解为,JiBX在程序编译时(运行之前)就将配置在XMl中的字段赋值给Java类中的属性,而JABX是通过代码,在程序运行时将XML中的字段动态绑定给Java类中的属性。

元数据(Metadata), meta作为前缀表示变化,转换的意思,我们可以自行意会,元数据是关于数据的组织、数据域及其关系的信息,简言之,元数据就是描述数据的数据,对数据及信息资源的描述性信息。元数据的定义证实了我们上段的描述,我们通过编写描述以及解析数据信息的代码,使得程序在运行时通过解析将XML中的信息绑定到Java类的属性当中。

xsd(XML Schema Definition,XML结构定义),XML Schema描述了XML文档的结构。可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XML Schema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析它。

XML Schema的优点:
1) XML Schema基于XML,没有专门的语法
2) XML可以象其他XML文件一样解析和处理
3) XML Schema支持一系列的数据类型(int、float、Boolean、date等)
4) XML Schema提供可扩充的数据模型。
5) XML Schema支持综合命名空间
6) XML Schema支持属性组。

XStream,Xstream是一种OXMapping 技术,是用来处理XML文件序列化的框架,在将javaBean序列化,或将XML文件反序列化的时候,不需要其它辅助类和映射文件

阅读全文
1 0
原创粉丝点击