== '''torque详细配置''' == Torque是Apache的公开源代码项目,最开始是Turbine框架的组成部分,后面被独立出来作为一个单独的组件,归入了Apache的DB项目下。Torque的主要功能是实现对数据库的访问,Torque 主要包含两部分:一部分 是 Generator,它通过使用xml配置文件,产生应用程序访问数据库的资源,包括创建数据库、表和初始化sql 语句和 java 文件;另外一部分是 Runtime,提供使用这些代码访问数据库的运行时环境。[[BR]] ORM(Object Relational Mapping,对象角色建模[[BR]] torque各版本之间的差距还是挺大的,本文以torque3.3的配置为例 http://db.apache.org/torque/download.html下载torque-gen-3.3.zip,torque-3.3.zip。 torque-gen-3.3.zip主要有torque-gen-3.3.jar,build.properties,default.properties和build-torque.xml。torque-gen-3.3.jar自然是提供Generator运行是的包支持,build-torque.xml是ant的运行文件,它读取了build.properties和default.properties两个配置文件,这两个properties设置了生成访问数据库需要的资源文件和java代码需要用到的环境变量。存储数据库系统的属性,主要有项目名称、数据库类型、数据库链接URL、Driver、用户名、密码及主机名等。 torque-3.3.zip解压后有torque-3.3.jar和Torque.properties,torque-3.3.jar提供torque运行时的包支持,Torque.properties是toorque访问数据库时初始化环境需要用到的一些配置内容。 综上,核心的配置文件为:[[BR]] A. build.properties[[BR]] B. *-schema.xml、id-table-schema.xml[[BR]] C. Torque.properties [[BR]] D. 一般还会有一个defalt.properties[[BR]] E. build-torque.xml 这个是ant的配置文件,参照这个就可了解到以上四个配置文件的作用[[BR]] id-table-schema.xml是Torque的IDBroker服务调用,用于指导Torque生成id_table表,他保存了project-schema.xml中相关ID自动增长的相关内容,实现类似于Oracle中的Sequence的功能。[[BR]] torque Genarator的核心任务,可以详细参照build-torque.xml的配置,列举默认常用的如下:[[BR]] (1).sql 解析%Torque_home%/schema/*.xml,生成对应的$Torque_home/src/sql/*.sql文件;[[BR]] (2).doc 解析%Torque_home%/schema/*.xml,生成对应的$Torque_home/src/sql/*.html文件,描述数据库结构;[[BR]] (3).create-db 生成不同平台上产生数据库系统的脚本;[[BR]] (4).insert-sql 执行%Torque_home%/schema/*-schema.sql文件到指定数据库; [[BR]] (5).sql2xml 解析%Torque_home%/schema/schema.sql文件,产生Torque对应的数据库文件%Torque_home%/schema/schema.xml; [[BR]] (6).id-table-init-sql 根据%Torque_home%/schema/id-table-schema.xml文件产生id表的初始化脚本文件;[[BR]] ANT的运行命令为%Torque_home%/ant -f build-torque.xml $taskname[[BR]] ant -f build-torque.xml [[BR]] ant -f build-torque.xml create-db [[BR]] ant -f build-torque.xml id-table-init-sql [[BR]] ant -f build-torque.xml insert-sql[[BR]] ---- 实际使用过程中,实际上没必要一定使用torque默认的文件夹结构(即:%Torque%\src\schema),因为所有工作都是有Ant完成的,文件夹的位置也都是在build-torque.xml值指定的。当然,如果你不打算修改build-torque.xml的话,就要使用torque默认的结构和要求的文件名格式。[[BR]] Torque 3.3 为例:[[BR]] build.properties文件:[[BR]] #工程名称[[BR]] torque.project = torque[[BR]] #数据库类型[[BR]] torque.database = mysql[[BR]] torque.addGetByNameMethod = true[[BR]] torque.addIntakeRetrievable = false[[BR]] torque.addSaveMethod = true[[BR]] torque.addTimeStamp = true[[BR]] torque.basePrefix = Base[[BR]] torque.complexObjectModel = true[[BR]] torque.useClasspath = true[[BR]] torque.useManagers = false[[BR]] torque.objectIsCaching = true[[BR]] torque.silentDbFetch = true[[BR]] torque.generateBeans = false[[BR]] torque.beanSuffix = Bean[[BR]] torque.enableJava5Features = false[[BR]] #数据库URL,注意数据库名应该和工程名保持一致[[BR]] torque.database.createUrl = jdbc:mysql://localhost:3306/mydb[[BR]] torque.database.buildUrl = jdbc:mysql://localhost:3306/torque[[BR]] torque.database.url = jdbc:mysql://localhost:3306/torque[[BR]] #数据库驱动类[[BR]] torque.database.driver = com.mysql.jdbc.Driver[[BR]] #连接数据库使用的用户名[[BR]] torque.database.user = root[[BR]] #连接数据库使用的密码[[BR]] torque.database.password = 229229[[BR]] #数据库的主机IP[[BR]] torque.database.host = 127.0.0.1[[BR]] torque.sameJavaName = false[[BR]] ---- project-schema.xml:[[BR]] 随便建了一个最简单的表为例:[[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]]
[[BR]]
[[BR]] ---- id-table-schema.xml:[[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]]
[[BR]]
[[BR]] 这个配置文件让数据库生成一个叫做ID_TABLE的表 ---- torque.properties:[[BR]] torque.applicationRoot = .[[BR]] log4j.category.org.apache.torque = ALL, org.apache.torque[[BR]] log4j.appender.org.apache.torque = org.apache.log4j.FileAppender[[BR]] log4j.appender.org.apache.torque.file = ${torque.applicationRoot}/logs/torque.log[[BR]] log4j.appender.org.apache.torque.layout = org.apache.log4j.PatternLayout[[BR]] log4j.appender.org.apache.torque.layout.conversionPattern = %d [%t] %-5p %c - %m%n[[BR]] log4j.appender.org.apache.torque.append = false[[BR]] torque.defaults.pool.maxIdle = 8[[BR]] torque.defaults.pool.maxActive = 10[[BR]] torque.defaults.pool.timeBetweenEvictionRunsMillis= 300000[[BR]] torque.defaults.pool.minEvictableIdleTimeMillis = 3600000[[BR]] //以上部分用默认的就可以了,也就是torque-3.3.zip里面自带的[[BR]] //下面灰色背景部分是需要针对自己项目改动的[[BR]] torque.defaults.connection.driver = com.mysql.jdbc.Driver[[BR]] torque.defaults.connection.url = jdbc:mysql://localhost:3306/torque[[BR]] torque.defaults.connection.user = root[[BR]] torque.defaults.connection.password = 229229[[BR]] torque.database.default=torque[[BR]] torque.database.torque.adapter=mysql[[BR]] # # Using commons-dbcp[[BR]] torque.dsfactory.torque.factory=org.apache.torque.dsfactory.SharedPoolDataSourceFactory[[BR]] torque.dsfactory.torque.pool.maxIdle=8[[BR]] torque.dsfactory.torque.pool.maxActive=10[[BR]] torque.dsfactory.torque.pool.testOnBorrow=true[[BR]] torque.dsfactory.torque.pool.validationQuery=SELECT 1[[BR]] torque.dsfactory.torque.connection.driver = com.mysql.jdbc.Driver[[BR]] torque.dsfactory.torque.connection.url = jdbc:mysql://localhost:3306/torque[[BR]] torque.dsfactory.torque.connection.user = root[[BR]] torque.dsfactory.torque.connection.password = 229229[[BR]] torque.idbroker.clever.quantity=true[[BR]] torque.manager.useCache = true[[BR]] ---- defalt.properties:[[BR]] 我使用的是wdw.properties配置文件,需要在build.xml中改动一下,将default.properties的路径改为wdw.properties文件路径即可[[BR]] torque.home = .[[BR]] #指定了生成Java文件的包路径[[BR]] torque.targetPackage = javaTorque.wdwtest[[BR]] torque.runOnlyOnSchemaChange = false[[BR]] torque.output.dir = ${torque.home}/src[[BR]] torque.schema.dir = ${torque.home}/src/schema[[BR]] torque.templatePath = templates[[BR]] torque.useClasspath = true[[BR]] torque.doc.dir = ${torque.output.dir}/doc[[BR]] torque.java.dir = ${torque.output.dir}[[BR]] torque.java.base.dir = ${torque.java.dir}[[BR]] torque.javadoc.dir = ${torque.output.dir}/javadoc[[BR]] torque.ojb.dir = ${torque.output.dir}/ojb[[BR]] torque.sql.dir = ${torque.output.dir}/sql[[BR]] torque.omzip.dir = ${torque.output.dir}[[BR]] torque.database.manualCreation = false[[BR]] torque.saveJavaName = false[[BR]] torque.addGetByNameMethod = true[[BR]] torque.addIntakeRetrievable = false[[BR]] torque.retrievableInterface = org.apache.turbine.om.Retrievable[[BR]] torque.addSaveMethod = true[[BR]] torque.addTimeStamp = true[[BR]] torque.basePrefix = Base[[BR]] torque.complexObjectModel = true[[BR]] torque.saveException = Exception[[BR]] torque.useClasspath = false[[BR]] # Whether to generate Manager classes for JCS-based caching.[[BR]] torque.useManagers = false[[BR]] torque.objectIsCaching = true[[BR]] torque.silentDbFetch = true[[BR]] torque.generateBeans = false[[BR]] torque.beanSuffix = Bean[[BR]] torque.subpackage.base.bean = bean[[BR]] torque.subpackage.bean = bean[[BR]] torque.subpackage.map = map[[BR]] torque.omzip.src.base = false[[BR]] torque.omzip.src.extension = false[[BR]] torque.omzip.bin.base = false[[BR]] torque.omzip.bin.extension = false[[BR]] torque.omzip.deleteFiles = false[[BR]] torque.generateDeprecated = true[[BR]] torque.idTableXMLFile =[[BR]] torque.initialID = 101[[BR]] torque.initialIDValue = 1000[[BR]] torque.initialIDStep = 10[[BR]] # Doc settings[[BR]] torque.doc.format = html[[BR]] torque.doc.html.normalFont = font-family: Verdana; font-size: 10pt;[[BR]] torque.doc.html.fkColor = afe295[[BR]] torque.template.sql = sql/base/Control.vm[[BR]] torque.template.om = om/Control.vm[[BR]] torque.template.om.base = om/ControlBase.vm[[BR]] torque.template.idTable = sql/id-table/Control.vm[[BR]] torque.template.dataDtd = data/Control.vm[[BR]] torque.template.dataDump = data/dump/Control.vm[[BR]] torque.template.dataSql = sql/load/Control.vm[[BR]] torque.template.doc = doc/Control.vm[[BR]] torque.template.sqlDbInit = sql/db-init/Control.vm[[BR]] torque.template.ojb = ojb/repository/Control.vm[[BR]] torque.template.ojbModel = ojb/model/Control.vm[[BR]] torque.compile.src.dir = ${torque.java.dir}[[BR]] torque.compile.build.dir = bin/classes[[BR]] torque.compile.debug = on[[BR]] torque.compile.deprecation = off[[BR]] torque.compile.optimize = off[[BR]] torque.schema.sql.includes = *-schema.xml[[BR]] torque.schema.sql.excludes =[[BR]] torque.schema.doc.includes = *-schema.xml[[BR]] torque.schema.doc.excludes =[[BR]] torque.schema.create-db.includes = *-schema.xml[[BR]] torque.schema.create-db.excludes =[[BR]] torque.schema.init-sql.includes = *-schema.xml[[BR]] torque.schema.init-sql.excludes = id-table-schema.xml[[BR]] torque.schema.om.includes = *-schema.xml[[BR]] torque.schema.om.excludes = id-table-schema.xml[[BR]] torque.schema.ojb.includes = *-schema.xml[[BR]] torque.schema.ojb.excludes =[[BR]] ---- [[Image(torque.bmp)]] javaTorque.wdwtest包里面的四个类:[[BR]] User.java就是数据表user的持久层对象[[BR]] UserPeer.java封装了持久层的操作[[BR]] sql包下面是torque生成的建表sql语句[[BR]] 所以,最常见的做法是:写好torque的配置文件*-schema.xml,然后生成其他一切东西,包括数据库[[BR]] 当然,torque也提供根据.sql文件生成xml配置文件的功能[[BR]]