热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

DB2pureXML动态编程组合拳:iBatis+BeanUtils+JiBX

本文要介绍的开发模式主要针对需求易变的应用开发,使用各种工具和技术来增强框架的灵活性。随着XML描述能力和灵活性被逐渐认识,许多XML相关技术应运而生,越来越多的应用使用了XML技术。一个基于XML的应用开发常常可以划分为几个层面:数据存储层

本文要介绍的开发模式主要针对需求易变的应用开发,使用各种工具和技术来增强框架的灵活性。随着 XML 描述能力和灵活性被逐渐认识,许多 XML 相关技术应运而生,越来越多的应用使用了 XML 技术。一个基于 XML 的应用开发常常可以划分为几个层面:数据存储层

本文要介绍的开发模式主要针对需求易变的应用开发,使用各种工具和技术来增强框架的灵活性。 随着 XML 描述能力和灵活性被逐渐认识,许多 XML 相关技术应运而生,越来越多的应用使用了 XML 技术。一个基于 XML 的应用开发常常可以划分为几个层面:数据存储层、数据访问层、业务逻辑层和界面展示层。

DB2 pureXML 技术的逐渐成熟,为这些基于 XML 的应用开发提供了有力的支持。 pureXML 技术提供了高效的 XML 存储方案,同时支持标准的 XML Query 语言,使得应用程序能方便、有效地组织 XML 数据,在数据存储层提供了灵活性。而为了使 pureXML 技术更好的整合到整个应用开发中,需要考查其它层面上的支持技术。

在基于 DB2 pure XML 的应用开发中,在数据访问层使用 iBatis 将是非常合适的。iBatis 是一个开源的持久层框架,它支持 POJO 类和数据库表之间的映射,为应用的上层提供了数据访问的抽象。和其他 ORM 框架相比,iBatis 在基于 DB2 pure XML 的应用开发中有着自己的优势。首先,iBatis 提供了灵活的映射定义方式,开发人员可以通过使用 SQL/XQUERY 语句描述数据库数据的组织逻辑,随着 XML 数据的引入,这种映射定义与实现机制表现出了良好的适用性,而其他的 ORM 框架对 XQUERY 的支持不是很好。其次,由于 iBatis 允许在映射文件中制定 SQL/XQUERY 语句,给开发人员提供了较大的灵活性,可以使用高效的 SQL/XQUERY 语句对数据进行访问。

在业务逻辑层,使用 JiBX 和 BeanUtils,JiBX 为数据绑定提供了支持,DeanUtils 则为动态类提供了支持。

复杂的业务逻辑,首先需要完成 POJO 与 XML 文档的数据绑定。JiBX 是一个数据绑定框架,它能够很好的实现 XML 数据与 Java 对象之间的绑定,从而满足应用程序中二者之间相互装换(Marshal/Unmarshal)的需求。对比其它数据绑定框架,JiBX 使用字节码增强以及 XPP(XML Pull Parsing)技术,拥有出色的性能(参见 参考资源 [5])。在基于 DB2 pure XML 的应用程序开发中,针对较频繁的 XML 数据与 Java 对象转换,JiBX 是一种不错的选择。

由于在业务逻辑层使用 POJO 对应 XML 数据的表示,而 POJO 需要动态改变以适应变化。BeanUtils 工具支持动态的修改 Java Bean,可以实现动态 POJO,已适应适应一些数据结构的变化需求。使用 BeanUtils 提供的工具类另一个优势是可以提高开发效率,开发人员可以使用较少的代码方便地实现对 Bean 的一些操作。

在界面展示层,引入 XSLT 技术。XSLT 是一种基于 XML 文档转换语言,可以将 XML 按照定义好的样式表进行转换。XSLT 可以实现 XML 数据与其表现形式解耦,对于同一份 XML 数据,可以应用不同的样式表,从而达到不同的表现形式。针对显示层需求的变化,只需修改样式表就可以。这种 XML 数据与其表现形式之间的松耦合为 XML 应用程序的前端开发带来较高的可扩展性,提高了 XML 应用开发的灵活性。

上述各层的考查,为基于 DB2 pureXML 的应用程序开发提供了一个实用的模式。本文接下来将简要介绍开发中所需的工具技术,以期让读者更好的了解这种开发模式。





回页首


背景知识

pureXML

XML 具有自我描述性(易理解性)、灵活性、平台无关性和标准化等优点,这一优秀的技术广泛应用到各个领域。DB2 9 为 XML 提供了很好的数据存储和管理机制,IBM 将这一技术称之为“pureXML”。DB2 V9 对 XML 进行高效地原生态的存储,并支持 SQL 和 XQuery 两种查询方式。不仅如此,所有关系型的操作方式和数据库工具都可用于 XML 之上,例如索引机制、导入导出、关联查询、高速批量加载、系统优化等等。在 pureXML 特性的支持下,DB2 V9 成为一个既支持关系数据,又原生态支持 XML 的名副其实的双引擎数据库。有了对 XML 数据的强大支持,DB2 pureXML 在企业中的应用价值也在日益得到广泛关注。

iBatis

IBatis 是一个“半自动化”的 ORM 框架。这里的“半自动化”,是相对 Hibernate 等提供了全面的数据库封装机制的“全自动化”ORM 实现而言,程序员往往只需定义好了 POJO 到数据库表的映射关系,SQL 可以自动生成和执行,即通过 Hibernate 或者 OJB 提供的方法完成持久层操作。而 iBatis 的着力点,则在于 POJO 与 SQL 之间的映射关系。也就是说,iBatis 并不会为程序员在运行期自动生成 SQL/XQuery 执行,具体的 SQL/XQuery 需要程序员编写,然后通过映射配置文件,将 SQL/XQuery 所需的参数,以及返回的结果字段映射到指定 POJO。这种半自动化为开发者提供了一定的自由发挥的空间。

下面就对 iBatis 工作机制作一个简单介绍,读者可以进一步查阅本文提供的参考资料。

IBatis 设计模式的核心部分就是 SQL Map,它需要提供一个 XML 文件来取得数据库的连接及实现简单 Java bean 与 SQL 的映射声明。SQL Map 并不仅仅是一个 XML 文件,它其实一个设计模式。在执行映射声明时,SQL Map 将创建一个 JDBC 的 PreparedStatement 实例,用在 XML 中描述的对象作为 PreparedStatement 实例的参数,执行 PreparedStatement 并从 Result 中创建结果对象,这个执行流程用图 1 表示:


图 1。 iBatis 执行流程图

JiBX

JiBX 是一款非常优秀的 XML 数据绑定框架,JiBX 的转换效率是目前很多开源项目都无法比拟的。它通过灵活的绑定映射文件来实现数据对象与 XML 文件之间的转换,这个文挡就是联系 XML 数据与 Java 对象之间的桥梁。

一个简单的绑定的例子如图 2 所示:


图 2。 一个简单的绑定定义

在这个例子中,JiBX 在绑定文件中定义了 XML 的子元素和 Java 类成员的映射关系,从而将 XML 元素与相应的 Java 对象特性联系起来。JiBX 提供的绑定定义非常灵活,感兴趣的读者可以从参考资料中详细了解。

使用 JiBX 绑定 XML 文档与 Java 对象分为两步 :





请点击此处查看全文

推荐阅读
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • SpringMVC RestTemplate的几种请求调用(转)
    SpringMVCRestTemplate的几种请求调用(转),Go语言社区,Golang程序员人脉社 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • 设计模式在软件开发中被广泛应用,但如果不当使用,可能会导致系统复杂性增加。例如,过度添加类可能导致类图难以理解,代码跟踪变得复杂。本文探讨如何在使用设计模式时保持系统的简洁和高效。 ... [详细]
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
  • 本文探讨了如何在Hive(基于Hadoop)环境中编写类似SQL的语句,以去除字段中的空格。特别是在处理邮政编码等数据时,去除特定位置的空格是常见的需求。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 本文详细介绍了如何解决 Microsoft SQL Server 中用户 'sa' 登录失败的问题。错误代码为 18470,提示该帐户已被禁用。我们将通过 Windows 身份验证方式登录,并启用 'sa' 帐户以恢复其访问权限。 ... [详细]
  • 配置PHPStudy环境并使用DVWA进行Web安全测试
    本文详细介绍了如何在PHPStudy环境下配置DVWA( Damn Vulnerable Web Application ),并利用该平台进行SQL注入和XSS攻击的练习。通过此过程,读者可以熟悉常见的Web漏洞及其利用方法。 ... [详细]
  • 本文详细介绍如何使用 Apache Spark 执行基本任务,包括启动 Spark Shell、运行示例程序以及编写简单的 WordCount 程序。同时提供了参数配置的注意事项和优化建议。 ... [详细]
  • openGauss每日一练第 12 天 |学习openGauss定义数据类型
    自己安装的openGauss环境启动openGaussgsctlDgaussdatadb1start登录openGaussgsqldpostgresp26000r1.创建一 ... [详细]
author-avatar
手机用户2502870065
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有