当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: Torque中的一些问题
 

 

    摘要: 摘自:http://www.hibernate.org.cn/viewtopic.php?t=13335&highlight=作者: 陈智峰 1. 文档背景介绍文档主要以本人在一个类似日志系统的项目中对“会议记要”模块进行修改时所遇到的问题为背景,描述了oracle 的clob数据类型在hibernate中的应用心得。现把心得小结一下,跟大家一块交流学习,本文的......
 ·java中对hashmap的深度分析    »显示摘要«
    摘要:   在java的世界里,无论类还是各种数据,其结构的处理是整个程序的逻辑以及性能的关键。由于本人接触了一个有关性能与逻辑同时并存的问题,于是就开始研究这方面的问题。找遍了大大小小的论坛,也把《java 虚拟机规范》,《apress,.java.collections.(2001),.bm.ocr.6.0.shareconnector》,和《thinking in java》翻了也找不到很好的答案......


Torque中的一些问题
torque中的一些问题

【程序编程相关:入门系列--纯Java的免费多功能数据库

【推荐阅读:使用Spring framework实现

说明:这里描述的问题来自: torque3.1.1, village2.0 dev,文中用到的代码来自开源apache项目. 文中虽例子,但主要是辅助说明错误原因与解决办法.以给使用turbine+torque+velocity的人一点帮助. 【扩展信息:java.net.FileNameMap

 

 

torque是apache数据库项目中一个子项目,它实现数据库的持久层,是jdo的apache实现.自从与turbine项目分出来后,它形成了两部分:

生成器与运行时库.生成器用来生成数据库资源与访问数据库的类,使用这些类与在运行时库的支撑下,应用程序对数据库的各种操作得以用java对象的普通用法与操作习惯实现.

torque除了用到apache其他项目如commons的成果外,还用到了一个开源项目:village(http://share.whichever.com/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个:

在设计阶段使用的build.properties,project-schema.xml,id-table-schema.xml以及在开发阶段的运行时用到的torque.properties.在构建阶段为每个表产生五个类文件:

<table-name>.java,<table-name>peer.java,

base<table-name>.java,base<table-name>peer.java,这俩文件不要修改,因为用ant重新构建时,这些文件会重新生成.把文件名称以peer结尾的称为peer类,实现对象关系影射(orm),不以peer结尾的称为数据对象,应用与数据对象交互.不以base开头的类扩展了以base开头的类.业务逻辑应该加在子类上.<table-name>mapbuilder.java,这是用于特定表<table-name>的影射文件.peer类的crud操作就是建立在village之上的.

 

 

现在开始一个例子,项目名称是cms,以这个例子说明一些问题.

这是一个cms项目的模式文件cms-schema.xml:

<?xml version="1.0" encoding="gb2312" standalone="no" ?>

<!doctype database system

 "http://jakarta.apache.org/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 name="filename" javaname="filename" primarykey="false" required="true" type="varchar"

                     size="30" javanamingmethod="underscore" description="文件名称"></column>

              <column name="oldfilename" javaname="oldfilename" primarykey="false" required="false" type="varchar"

                     size="30" javanamingmethod="underscore" description="旧文件名称"></column>

              <column name="attname" javaname="attname" primarykey="false" required="true" type="varchar"

                     size="50" javanamingmethod="underscore" description="附件名称,由用户指定的名称"></column>

              <column name="img" javaname="img" primarykey="false" required="false" type="blob"

                     javanamingmethod="underscore" description="附件文件,保存大文件"></column>


...   下一页
    摘要: 作者:关文柏 时间:2005年5月26日现在java/j2me/ target=_blank>j2me联网的技术很多,本人也只是刚刚接触这方面,这几天帮别人调试了一些这方面的程序,学到了不少东西,下面就谈谈我学习的过程.首先这种程序可以简化的分解成三个层面,1,j2me的客户端(midlet程序)2,服务器端的servlet(servlet程序)3,数据库(access或者是sql等)下面我通过......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE