- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Torque中的一些问题
说明:这里描述的问题来自: Torque3.1.1, Village2.0 dev,文中用到的代码来自开源Apache项目. 文中虽例子,但主要是辅助说明错误原因和解决办法.以给使用Turbine+Torque+Velocity的人一点帮助.
Torque是apache数据库项目中一个子项目,它实现数据库的持久层,是JDO的Apache实现.自从和Turbine项目分出来后,它形成了两部分:
生成器和运行时库.生成器用来生成数据库资源和访问数据库的类,使用这些类和在运行时库的支撑下,应用程序对数据库的各种操作得以用java对象的普通用法和操作习惯实现.
Torque除了用到Apache其他项目如Commons的成果外,还用到了一个开源项目:Village(/index.php?SCREEN=village),它位于JDBC API上,提供不用写sql语句就可以实现数据库的crud操作.使用它和数据库里的表以及里面的记录打交道,就象是在一个小镇,一些小屋和小屋里的人们交谈,非常祥和的感觉.它的设计也是非常简洁,占用的空间也不大,真的就象一个游者,可以很轻松的驴行天下.
Torque的生成器使用了Velocity项目,该项目是java的模板语言,在生成数据库资源时,它出了全力,我们可以通过修改{Torque.dir}\templates中各子文件夹里的vm模板来适合数据库及你项目中的需要.例如,对于PostgreSQL8,Torque生成的库资源中创建数据库的sql代码中没有指定代码页,这样PostgreSQL将使用默认的SQL_ASCII设置,如果想让生成的资源指定代码页可以修改{Torque.dir}\templates\sql\db-init\postgresql中的createdb.vm,本例指定代码页为UNICODE,如下:
#foreach ($databaseName in $databaseNames)
drop database $databaseName;
create database $databaseName
ENCODING = UNICODE;#增加该行即可
#end
用Torque做为项目的持久层,其开发过程是很简单的,需要提供的总文件数是4个:
在设计阶段使用的perties,project-schema.xml,id-table-schema.xml以及在开发阶段的运行时用到的Tperties.在构建阶段为每个表产生五个类文件:
table-name.java,table-namePeer.java,
Basetable-name.java,Basetable-namePeer.java,这俩文件不要修改,因为用ant重新构建时,这些文件会重新生成.把文件名称以Peer结尾的称为Peer类,实现对象关系影射(ORM),不以Peer结尾的称为数据对象,应用和数据对象交互.不以base开头的类扩展了以base开头的类.业务逻辑应该加在子类上.table-nameMapBuilder.java,这是用于特定表table-name的影射文件.Peer类的crud操作就是建立在Village之上的.
现在开始一个例子,项目名称是cms,以这个例子说明一些问题.
这是一个cms项目的模式文件cms-schema.xml:
?xml version=1.0 encoding=gb2312 standalone=no ?
!DOCTYPE database SYSTEM
/turbine/dtd/database.dtd
database name=news package=org.news.om
table name=atts idMethod=none description=保存了新闻的附件信息,它和新闻存在引用关系.
column name=pagedate javaName=pagedate primaryKey=true required=true type=VARCHAR
size=8 javaNamingMethod=underscore description=页创建日期,缩略形式/column
column name=pagecode javaName=pagecode primaryKey=true required=true type=VARCHAR
size=5 javaNamingMethod=underscore description=页代码/column
column na
文档评论(0)