电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

优秀的对象角色建模解决方案-Torque


发布日期:2020/6/20
 

目前对于JEE应用中的Persistence Layer的解决方案很多其中最近从Apache Turbine中剥离处理的Torque是一个优秀的ORM(Object Relational Mapping对象角色建模) 解决方案

主流的Persistence Layer解决方案

随着基于JEE应用的日益增加出现了很多Persistence Layer的解决方案目前主要的解决方案有以下几种

◆ 自己编写基于JDBC API的解决方案

◆ 采用ObjectRational Mapping(ORM)工具或者是采用面向对象的数据库(ODBMS)

◆ JEE/Entity Bean CMP (containermanaged persistence)

◆ JDO

JDBC

在很多情况下尤其是没有采用良好的Persistence Layer解决方案的项目中开发人员需要自己手动编写SQL语句同时还要考虑事务处理等问题从而使得SQL语句散落在代码中可维护性很差同时由于每个项目都要重新编写Persistence 相关的代码所以代码可重用性差另外要求开发人员对于SQL语法必须非常熟悉否则调试也比较困难

使用JDBC的解决方案数据必须存储在关系型数据库中

ORM或者ODBMS

为了将开发人员从SQL语句中解脱出来产生了很多ORM的工具这些工具都比较简单并且提供了API支持

由于ORM工具比较多它们采用的技术标准都不尽相同而且没有统一的接口因此它们在为开发人员提供方便的同时也增加了一定的束缚ORM技术是比较成熟的而且已经有很多产品了

而ODBMS是近几年发展起来的并不十分成熟而且也没有得到广泛的应用目前众多ODBMS厂商正在关注JDO标准并加以实施它可能在不久的将可以得到一定的推广

使用ORM或者ODBMS的解决方案数据也必须存储在关系或者面向对象数据库中

EJB CMP

在JEE的规范中为EJB定义了两种Persistence的解决方案一种是BMP另一种是CMP其中CMP不需要将SQL语句加入到代码中

目前在采用JEE的应用中EJB CMP方式得到了广泛应用更加引人注意的是随着EJB规范的发展CMP也包含了一些高级关系的内容但是CMP的使用比较复杂对很多开发人员来说比较难以掌握而且不是在所有的情况下都适合在系统中采用EJB

EJB提供了除了关系型数据库以外更多的存储支持

JDO

目前有两种类型的JDO实现一种是Sun的JDO另一种是Castor JDO这两者并不兼容

Sun JDO是Sun Java Community Process给出的规范和参照实现尽管JDO还有些不成熟但它很有发展前景而且填补了数据库编程领域的一大空白对Java开发人员而言JDO为对象持久性提供了第一个标准化的完全面向对象的方法与此领域中的其它技术相比JDO的优点是使用起来十分简单而且对原始的Java源代码打乱程度最小同时Sun JDO对数据存储类型是透明的

而Castor JDO是一个开源项目年开始开发在开源的JDO项目中它提供的功能是最强大的尽管Castor JDO开发的比较早但是随着Sun JDO的日益成熟它的优势越来越小同时Castor JDO只提供对RDMS的支持

从上面的分析我们可以看到由于目前绝大多数应用系统的数据都是存储在RDMS中而且JDO目前还不十分完善因此在项目中还是应该采用成熟的ORM工具

Torque

Torque是一种ORM的工具它最早是Apache Jakarta Turbine项目的一部分现在已经从Turbine中剥离出来可以独立使用目前它的版本是

Torque的主要特性

Torque主要包含两部分一部分是Generator它可以产生应用需要的所有数据库资源包括sql和java文件另外Torque还提供了一个运行环境来运行产生的类下面主要讨论Torque 的Generator

. 三个核心文件

要利用Torque的Generator必须配置好以下三个文件(Torque的安装路径为$Torque_home)

◆ $Torque_home/buildproperties 存储数据库系统的属性主要有项目名称数据库类型数据库链接URLDriver用户名密码及主机名等Torque利用该文件的属性建立与数据库系统的连接

◆ $Torque_home/schema/projectschemaxmlidtableschemaxml 其中projectschemaxml 存储表结构信息而idtableschemaxml由Torque的IDBroker服务调用

◆ $Torque_home/Torqueproperties 存储应用执行时由Torque生成的对象模型代码使用的属性值在生成数据库系统资源的时候不需要这个文件

核心任务

利用Torque提供的Generator可以完成下面的主要任务

◆ sql 解析$Torque_home/schema/*xml生成对应的$Torque_home/src/sql/*sql文件

◆ doc 解析$Torque_home/schema/*xml生成对应的$Torque_home/src/sql/l文件描述数据库结构

◆ createdb 生成不同平台上产生数据库系统的脚本

◆ insertsql 执行$Torque_home/schema/*schemasql文件到指定数据库

◆ sqlxml 解析$Torque_home/schema/schemasql文件产生Torque对应的数据库文件$Torque_home/schema/schemaxml

◆ idtableinitsql 根据$Torque_home/schema/idtableschemaxml文件产生id表的初始化脚本文件

上述任务需要ANT的支持运行命令为$Torque_home/antf buildtorquexml $taskname

Peer

Peer是Torque使用的ORM工具它比其它的工具(例如CastorOsage等)的层次要低开发人员需要手工编写一些代码但是这从一定意义上增加了灵活性

Peer利用Torque数据库Adaptor类来建立与数据库的连接因为它支持主流的数据库系统所以开发人员一般情况下不需要为数据库系统编写Adaptor

在建立了项目数据库系统的Schema文件后运行ant f buildtorquexmlTorque为Schema 中的每个表的对象模型生成四个类例如开发人员在projectschemaxml 中定义了Author表则Torque生成的四个类为AuthorAuthorPeer BaseAuthorBaseAuthorPeer等其中Author和AuthorPeer分别是BaseAuthor和BaseAuthorPeer 的子类这两个基类(BaseAuthorBaseAuthorPeer)包含了Torque的生成逻辑在开发中不应该修改因为Torque会在再次生成对象模型时覆盖这些文件所以系统中的业务逻辑应该放在Author和AuthorPeer类中

在Torque中AuthorPeer和BaseAuthorPeer称为对等类(Peer Classes)而Author和BaseAuthor称为数据对象(Data Objects)对等类和数据对象之间的区别是对等类封装数据表信息并提供静态方法对表进行增加删除修改记录的操作数据对象封装表中的记录信息并对每个字段提供getters/mutators方法

Criteria

Criteria是一对SQL查询标准的抽象对象开发人员利用它来封装特定的SQL语句Criteria实际上是SQL语句中域名和值之间的映射默认的Comparator是等于(=)同时它还提供基本的Comparator以及JoinOrder byDistinct等更多的方法及属性请查看orgapachetorqueutil

Criteria

Criteria提供了一般意义上的SQL功能如果仍然不能满足开发的需要开发人员仍然可以手写SQL语句

Torque在JEE中的应用

在Apache Jakarta的项目中有很多Web 应用构架其中StrutsCocoon及Turbine是比较着名的几个

Torque作为数据库抽象的工具虽然是从Turbine中剥离出来的但是它可以与其它的构架很好地结合成为Persistence层的优秀解决方案

应用步骤

在JEE应用使用Torque的步骤如下

. 系统分析和设计直至Business Object

. 按照Business Object模型形成数据库脚本文件databasesql

. 编写$Torque_home/buildproperties

上一篇:始终会用上的Common BeanUtils

下一篇:用fasterCSV快速处理导入CSV文件