`
duanhengbin
  • 浏览: 383506 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

O/X Mapping 工具研修

    博客分类:
  • XML
 
阅读更多

 

网上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 O/R Mapping 框架

    Macrobject NObject 是一套用于 .NET 平台的 O/R Mapping (Object-Relation Mapping,对象关系映射) 框架。 ??NObject O/R Mapping 框架支持多种数据库,完全对用户透明,切换数据库无需更改代码。NObject O/R ...

    hibernate如何用O/R Mapping框架来实现我们的数据层

    理解典型的三层架构,如何用O/R Mapping框架来实现我们的数据层。这里主要介绍现在非常流程的Hibernate框架,,掌握Hibernate相关的概念;并如何做对象和关系的映射,如何在应用中使用Hibernate

    O/R_Mapping思想

    O/R_Mapping思想与ADO.NET 基于.NET的Web应用框架的设计与实现 将对象映射到关系数据库——对象/关系映射(O/R_Mapping)详解 面向对象设计中的O/R映射架构

    泛型、反射 实现 O/R mapping 示例

    通过泛型、反射 实现文本的 O/R mapping 示例

    MJDU v6.0 及使用教程(注解+反射+XML+O/R Mapping+R/O Mapping)

    组件出版于 2012 年末横空出世,由于不会炒作,...我才发现原来在 2013 年时上传的 0.04 版本是不带 OR/RO Mapping 机制的。。。 想了想,还是补上 v6 这个带 OR/RO Mapping 机制的版本吧,虽然是同一时期的产物。

    o-x-mapping测试

    通过schema生成java对象,读写xml文件

    Hibernate O/R Mapping 入门工程包

    Hibernate 快速入门的工程包 包括用xml和annotation映射数据表

    Tornado O/R Mapping Engine-开源

    Tornado / DB是Java的对象关系映射引擎。 功能包括对象缓存,多表继承,复合键,关系,XML配置,JSP标记,占用空间小。

    OR Mapping中对象关系映射解决方案汇总

    O/R Mapping中对象关系映射解决方案汇总 对于一个ORM方案时,为了提供用户对具体映射方案的细颗粒度的控制的可能,特别对于企业级应用,应该是用户选择是否使用该产品比较重要的因素之一,需要尽可能多的实现...

    SQL2JAVA

    O/R mapping 工具

    AutoJava Java代码自动生成工具

    AutoJava根据O/R Mapping规则生成表对应的Java对象,并且生成了所有的添加、删除、修改、查询等底层数据库操作代码。借助于AutoJava我们基本上不用再写与数据库相关的操作代码,只需要在此基础上实现相关的业务逻辑...

    Attribute 学习

    Attribute O/R Mapping 学习

    O/RM自动生成工具

    自动生成数据库的实体,以.net解决方案的格式生成,包括业务模型,数据库实体,以及Web页面。很方便的,我使用之后。

    Java Persistence API 2.0 FINAL文档

    mapping with Java EE and Java SE. The technical objective of this work is to provide an object/relational mapping facility for the Java application developer using a Java domain model to manage a ...

    开发J2EE应用的要领

    比如,为实现内容的RDBMS存储,我们可能的方法 有JDBC、Entity Beans、JDO、O/R Mapping工具、XML-DBMS、JAXB等方法。因此,为实现 J2EE各层以及层与层之间的耦合,J2EE系统架构师需要考虑的问题会很多。加上,J2EE...

    马士兵hibernate学习笔记(原版)

    2 Hibernate原理模拟 - 什么是O/R Mapping以及为什么要有O/R Mapping 3 常见的0/R框架(了解) 4 hibernate基础配置(重点) 5 ID生成策略(重点 AUTO) 6 Hibernate核心开发接口介绍(重点) ... 风格 1 ...

    TORM.rar_mapping 框架_springcloudNo mappi_torm

    软件设计课做的一个类似Hibernate的O/R Mapping的框架

    mybatis框架下使用generator插件自动生成domain/mapping/mapper

    手动去创建domain/mapping/mapper费时费力还容易出错,用插件自动生成非常的方便

    Java EE轻量级解决方案S2SH

    在Hibernate部分主要讲解O/R Mapping的设计理念,Hibernate对O/R Mapping的支持,Hibernate的配置及多种关系映射的实现,以及HQL查询数据。在Spring部分主要讲解IoC的原理,Spring对Bean的管理机制,Spring AOP编程...

Global site tag (gtag.js) - Google Analytics