ホームページ データベース mysql チュートリアル DB2 pureXML 动态编程组合拳:iBatis+BeanUtils+JiBX

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

Jun 07, 2016 pm 03:43 PM
db2 動的 プログラミング

本文要介绍的开发模式主要针对需求易变的应用开发,使用各种工具和技术来增强框架的灵活性。随着 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 的应用程序开发提供了一个实用的模式。本文接下来将简要介绍开发中所需的工具技术,以期让读者更好的了解这种开发模式。


DB2 pureXML 动态编程组合拳:iBatis+BeanUtils+JiBX
DB2 pureXML 动态编程组合拳:iBatis+BeanUtils+JiBX
DB2 pureXML 动态编程组合拳:iBatis+BeanUtils+JiBX
DB2 pureXML 动态编程组合拳:iBatis+BeanUtils+JiBX
回页首


背景知识

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 执行流程图
DB2 pureXML 动态编程组合拳:iBatis+BeanUtils+JiBX

JiBX

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

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


图 2。 一个简单的绑定定义
DB2 pureXML 动态编程组合拳:iBatis+BeanUtils+JiBX

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

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





      请点击此处查看全文

 
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

正規表現を使用してPHP配列から重複した値を削除します 正規表現を使用してPHP配列から重複した値を削除します Apr 26, 2024 pm 04:33 PM

正規表現を使用して PHP 配列から重複値を削除する方法: 正規表現 /(.*)(.+)/i を使用して、重複値を照合して置換します。配列要素を反復処理し、preg_match を使用して一致をチェックします。一致する場合は値をスキップし、一致しない場合は重複値のない新しい配列に追加します。

プログラミングは何のためにあるのか、それを学ぶと何の役に立つのか? プログラミングは何のためにあるのか、それを学ぶと何の役に立つのか? Apr 28, 2024 pm 01:34 PM

1. プログラミングは、Web サイト、モバイル アプリケーション、ゲーム、データ分析ツールなど、さまざまなソフトウェアやアプリケーションの開発に使用できます。その応用分野は非常に幅広く、科学研究、医療、金融、教育、エンターテイメントなど、ほぼすべての業界をカバーしています。 2. プログラミングを学ぶことは、問題解決スキルと論理的思考スキルを向上させるのに役立ちます。プログラミング中、問題を分析して理解し、解決策を見つけてコードに変換する必要があります。この考え方は、分析能力と抽象能力を養い、実際的な問題を解決する能力を向上させることができます。

C++ プログラミング パズルのコレクション: 思考を刺激し、プログラミング スキルを向上させます C++ プログラミング パズルのコレクション: 思考を刺激し、プログラミング スキルを向上させます Jun 01, 2024 pm 10:26 PM

C++ プログラミング パズルは、フィボナッチ数列、階乗、ハミング距離、配列の最大値と最小値などのアルゴリズムとデータ構造の概念をカバーします。これらのパズルを解くことで、C++ の知識を強化し、アルゴリズムの理解とプログラミング スキルを向上させることができます。

Golang を使用してブラウザベースのアプリケーションを構築する Golang を使用してブラウザベースのアプリケーションを構築する Apr 08, 2024 am 09:24 AM

Golang を使用してブラウザベースのアプリケーションを構築する Golang は JavaScript と組み合わせて、動的なフロントエンド エクスペリエンスを構築します。 Golang をインストールする: https://golang.org/doc/install にアクセスします。 Golang プロジェクトをセットアップします。 main.go というファイルを作成します。 GorillaWebToolkit の使用: HTTP リクエストを処理するための GorillaWebToolkit コードを追加します。 HTML テンプレートの作成: template サブディレクトリに、メイン テンプレートであるindex.html を作成します。

Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Oct 11, 2024 pm 08:58 PM

Python は、問題解決の初心者に力を与えます。ユーザーフレンドリーな構文、広範なライブラリ、変数、条件文、ループによる効率的なコード開発などの機能を備えています。データの管理からプログラム フローの制御、反復的なタスクの実行まで、Python が提供します

Go Get を使用して Go モジュールをすばやく簡単に入手します Go Get を使用して Go モジュールをすばやく簡単に入手します Apr 07, 2024 pm 09:48 PM

GoGet を使用すると、Go モジュールをすばやく簡単に取得できます。手順は次のとおりです: ターミナルで goget[module-path] を実行します。ここで、 module-path はモジュール パスです。 GoGet は、モジュールとその依存関係を自動的にダウンロードします。インストールの場所は、GOPATH 環境変数によって指定されます。

コーディングの鍵: 初心者のための Python の力を解き放つ コーディングの鍵: 初心者のための Python の力を解き放つ Oct 11, 2024 pm 12:17 PM

Python は、学習の容易さと強力な機能により、初心者にとって理想的なプログラミング入門言語です。その基本は次のとおりです。 変数: データ (数値、文字列、リストなど) を保存するために使用されます。データ型: 変数内のデータの型 (整数、浮動小数点など) を定義します。演算子: 数学的な演算と比較に使用されます。制御フロー: コード実行のフロー (条件文、ループ) を制御します。

エラー処理には golang のエラー ラップおよびアンワインド メカニズムを使用する エラー処理には golang のエラー ラップおよびアンワインド メカニズムを使用する Apr 25, 2024 am 08:15 AM

Go のエラー処理には、ラップ エラーとアンラップ エラーが含まれます。エラーをラップすると、あるエラー タイプを別のエラー タイプでラップできるようになり、エラーのより豊富なコンテキストが提供されます。エラーを展開し、ネストされたエラー チェーンをたどって、デバッグを容易にするために最下位レベルのエラーを見つけます。これら 2 つのテクノロジを組み合わせることで、エラー状態を効果的に処理でき、より豊富なエラー コンテキストと優れたデバッグ機能が提供されます。

See all articles