网上O/X Mapping的资料大多非常分散,不方便对比分析,本文汇集了一段时间这方面的学习成果。
(一)基本概念
★O/X Mapping(OBJECT/XML 映射):即是在JAVA对象和XML 之间的映射,互相转换。(与ORM类似)
主要有以下两种:
*数据绑定:是指取出一些数据(比如从 XML 文档、文本文件或者数据库中)并通过程序表示这些数据的过程--把数据 绑定到虚拟机(VM)能够理解并且可以操作的某种内存中结构。(如JAXB,Castor等)
*序列化/反序列化: 从JAVA到xml 为序列化,反之,从xml到JAVA为 反序列化,这里主要指不通过DTD,或SCHEMA等直接做转换的方法(如Xstream等)。
相比数据绑定,序列化/反序列化的要求比较低(无需提供XML Schema),更加“小快灵”,当然功能也不如数据绑定强大。
(二)文档模型与数据绑定
以Dom4j为首的文档模型工具,对于简单的数据结构的XML的解析应该是适用的。但是当XML结构变得更大更复杂很大,或是格式经常变更的场合,开发及维护起来就会越来越困难了。
为解决这个问题数据绑定(如:JAXB,Castor等)出现了。
文档模型和数据绑定(如:JAXB,Castor等)都在内存中建立文档的表示,都需要在内部表示和标准文本 XML 之间双向转换。 两者的区别在于文档模型尽可能保持 XML 结构,而数据绑定只关心应用程序所使用的文档数据。
文档模型和数据绑定 之于 数据世界中JDBC和ORM之间的关系非常相似(ORM本身就是针对数据库的轻量级数据绑定框架)。O/X Mapping 是JAVA处理XML的比较高一级的抽象,它自然的让开发人员与底层技术隔离,有效地减低了开发难度。
对于这类需求无论减轻开发难度还是解耦的观点来看,数据绑定应该都是更佳的选择。
(三)选择之前的关注点
★以谁(JAVA类 或 XML)为中心
归纳起来有以下情况:
*以JAVA类为中心 :既存Java 类,需要映射到XML。
*以Xml为中心:既存XML需要映射到Java 类。
*JAVA类与XML兼顾:Java 类 和 XML都已存在(或都不存在),需要做映射。
应用场景会直接影响映射方式的选择。
★映射的方式
*代码生成:数据绑定工具的利器,这类代码往往都带有注解。当然熟悉规则后也可以手工开发,但是难度较大。
应用场景:只是应用“在以Xml为中心”的场合
优点:无编码,减轻工作量
缺点:转换前提的XML需要有对应的 XML Schema(*.XSD) 文件,XML变更要重做生成
*映射绑定:比代码生成具有更大的灵活性。使用真正的对象类将数据和行为组合在一起。也可以在一定程度上解除对象类与实际 XML 之间的耦合。修改映射定义(而不需要改变应用程序代码)通常处理 XML 文档结构中微小的变化。甚至可以用一种格式定义单独的输入和输出映射来对文档进行数据分解,并用另一种格式编组它们。
应用场景:一般应用在 "JAVA与XML兼顾"的场合
优点:当然是类与实际 XML 之间的耦合性降低,JAVA类或 XML变更的场合,只改映射文件就行了。
缺点:在设置方面,它确实比生成代码方法需要花费更多精力。
*编码方式:映射绑定的程序实现版本(Xstream独有?)
应用场景:一般应用在 "JAVA与XML兼顾"的场合
优点:相对简单,JAVA类与XML大部分一致时比较方便
缺点:耦合性强,Java类 或XML的变动都可能影响代码
*默认方式:按照框架默认的方式,直接进行匹配的方式。(Xstream,Castor)
应用场景:只是应用“在以JAVA类为中心”的场合
优点:无配置,简单
缺点:完全依赖工具(需要清楚工具的各种限制)
★数据类型支持问题
不同的工具对数据类型的支持程度会有差别。(如:MAP型数据,日期格式转换,中文编码等)
★性能问题
对于大数据量的需求来说这也是必须要考虑的。
(四)研修对象
挑选了一些我认为比较“主流”的工具。
序列化工具:
Xstream (一个使用简单的序列化工具,颇具人气)
Betwixt (Apache Commons下的一个组件)
数据绑定工具:
JAXB (SUN推出的业界标准,当然必修)
Castor (自从被Spring3.0 包装进去,地位提高了许多)
JiBX (以效率高而闻名的映射工具,还有插件支持)
XMLbeans (又一个Apache旗下组件,支持“游标”概念)
Smooks (一款适用很多数据类型的数据转换平台)
相关推荐
Macrobject NObject 是一套用于 .NET 平台的 O/R Mapping (Object-Relation Mapping,对象关系映射) 框架。 ??NObject O/R Mapping 框架支持多种数据库,完全对用户透明,切换数据库无需更改代码。NObject O/R ...
### Hibernate与O/R Mapping框架详解 #### 一、O/R Mapping概述 O/R Mapping(Object-Relational Mapping)即对象关系映射,是一种程序技术,用于将对象模型表示的应用程序对象与关系数据库中的表进行相互转换。在...
在Java编程语言中,O/R Mapping(对象关系映射)是一种技术,用于将数据库中的关系数据映射到对象模型上,使得开发人员可以更方便地处理数据,而无需直接操作SQL语句。在这个示例中,我们将探讨如何利用泛型和反射来...
O/R_Mapping思想与ADO.NET 基于.NET的Web应用框架的设计与实现 将对象映射到关系数据库——对象/关系映射(O/R_Mapping)详解 面向对象设计中的O/R映射架构
组件出版于 2012 年末横空出世,由于不会炒作,...我才发现原来在 2013 年时上传的 0.04 版本是不带 OR/RO Mapping 机制的。。。 想了想,还是补上 v6 这个带 OR/RO Mapping 机制的版本吧,虽然是同一时期的产物。
**Hibernate O/R Mapping 入门工程包** 在Java开发领域,Hibernate是一个强大的对象关系映射(Object-Relational Mapping,简称ORM)框架,它能够帮助开发者将数据库操作转化为面向对象的编程,从而降低了数据库和...
"o-x-mapping"通常指的是对象到XML的映射,它允许我们将Java对象转换为XML文档,或者从XML文档中反向创建Java对象。这种映射机制是许多框架和库的核心功能,如JAXB(Java Architecture for XML Binding)和XStream等...
Tornado O/R Mapping Engine,简称为Tornado/DB,是一款基于Java平台的对象关系映射(Object-Relational Mapping,ORM)工具。ORM技术的主要目标是通过将数据库中的数据与应用程序中的对象进行映射,从而简化数据库...
相比之下,O/X mapping尤其是通过JAXB和Castor等工具实现的方案,通过将对象状态与结构信息共同持久化为自描述的XML文档,为Java数据持久化提供了更强大、更灵活的选项,尤其适合于需要跨应用程序共享数据或进行复杂...
- 采用 O/R Mapping 工具后,可以简单地创建一个用户对象并调用相应的保存方法,工具会自动将对象状态转化为 SQL 语句执行。这样减少了代码量,简化了开发过程。 - **示例 3**:新增部门(使用 O/R Mapping) - ...
本主题的核心是“O/RM自动生成工具”,这是一款能够自动生成数据库实体、业务模型以及Web页面的工具,尤其适合.NET框架下的项目。使用这种工具,开发者无需手动编写大量的数据访问代码,从而提高了开发效率并减少了...
O/R Mapping 工具是指Object-Relational Mapping的工具,它可以将对象模型转换为关系数据库的表结构。NHibernate 是一个常见的 O/R Mapping 工具,它可以帮助开发者快速地将对象模型映射到数据库表中。 知识点3:...
本讲座主要围绕Hibernate这一强大的对象/关系映射(O/R Mapping)框架展开,旨在帮助学员理解O/R Mapping原理,掌握Hibernate的使用,并能够运用到实际项目开发中。适合熟悉Java、SQL、JDBC,具备面向对象编程经验的...
AutoJava根据O/R Mapping规则生成表对应的Java对象,并且生成了所有的添加、删除、修改、查询等底层数据库操作代码。借助于AutoJava我们基本上不用再写与数据库相关的操作代码,只需要在此基础上实现相关的业务逻辑...
6. O/X Mapping集成支持。 7. 集成JavaEE其他容器服务 8. Web层集成支持 9. 高级Spring3.0 特性 10. 附录A,安装及使用SpringSource Tool Suite 11. 附录B,Spring3.0内置的命名空间 12. 附录C, Spring Web Services...
2. **映射元数据(Mapping Meta Data)**:映射元数据是描述对象如何映射到数据库模式的配置信息,它可以是XML文件、注解或其他形式,用于指导O/R映射工具如何生成SQL语句和执行数据操作。 3. **映射在整体过程中的...
《SQL2JAVA:深入理解O/R Mapping工具》 在当今的软件开发中,尤其是在企业级应用领域,数据库管理和数据操作是至关重要的环节。SQL2JAVA作为一个O/R Mapping(对象关系映射)工具,旨在简化数据库与Java应用程序...
Hibernate是Java领域中一款流行的持久化框架,它实现了对象关系映射(O/R Mapping),将复杂的数据库操作转化为对Java对象的操作,从而简化了开发过程。本文主要围绕Hibernate 3.2的学习笔记,涵盖其基本概念、配置...