标签:
这篇文章学习如何使用Torque,作为一个ORM(a tool that maps relational databases to java classes)
用Torque访问数据库,需要如下步骤
每个schema文件包含一个数据库作为根元素。
Torque uses the information from the database schema to generate classes by which the database can be accessed. Also, Torque can generate SQL scripts and documentation in HTML and xdoc format from the schema. The Torque generator must be invoked in order to generate these artifacts. This can be done in three different ways: via Maven 2/3, via ant or via plain Java.
产生的java代码具有数据库独立性。这意味着不必为每种数据库重新生成代码。但是有几点需要注意的:
产生的SQL具有数据库依赖性 (of course).
Torque通过调用Torque.init() 来初始化。Torque在使用前必须初始化,而且只能初始化一次。初始化时必须提供执行configuration文件的路径或者configuration本身。
一旦初始化,数据库的runtime model,比如DatabaseMaps会自动有生成的MapBuilder类创建。每个peer class在Base class被加载时构建runtime model,并且将table model注册到相应的database model中。
Configuration说明
torque.database.default=bookstore
torque.database.bookstore.adapter=mysql
读数据需要指定读哪个数据库里的哪张表。Torque引入Criteria object表达SQL Query。之后将Criteria对象传给一个Peer类,该类会负责查询数据库并将结果以Data Object返回。
Runtime中有两类Criteria类:org.apache.torque.criteria.Criteria and org.apache.torque.util.Criteria。前者推荐给新项目,后者已过时但可以支持legacy项目。
Criteria crit = new Criteria(); Criterion a1 = new Criterion(ABC.A, 1, Criteria.LESS_THAN); Criterion b2 = new Criterion(ABC.B, 2, Criteria.GREATER_THAN); Criterion a5 = new Criterion(ABC.A, 5, Criteria.GREATER_THAN); Criterion b3 = new Criterion(ABC.B, 3, Criteria.LESS_THAN); crit.where(a1.and(b2).or(a5.and(b3)));
往数据库中写数据,调用save()方法。写的方式分为insert和update。另外一种选择方案是调用对用Peer类的静态方式doInsert()或者doUpdate()
Mass Updates: BasePeer的中的doUpdate(Criteria, ColumnValues) 方法,允许一次修改多个数据对象。比如将id大于5的author的name置null
Criteria criteria = new Criteria(); criteria.where(AuthorPeer.AUTHOR_ID, 5, Criteria.GREATER_THAN); ColumnValues columnValues = new ColumnValues(); columnValues.put(AuthorPeer.NAME, new JdbcTypedValue( null, java.sql.Types.VARCHAR)); BasePeer.doUpdate(criteria, columnValues);
删除对象: 如何数据已经加载到了直接调用对应Peer类的doDelete(xxx);如果没有被加载,则直接使用Criteria
Criteria criteria = new Criteria(); criteria.where(AuthorPeer.AUTHOR_ID, 5, Criteria.GREATER_THAN); AuthorPeer.doDelete(criteria);
https://db.apache.org/torque/torque-4.0/documentation/orm-reference/index.html
标签:
原文地址:http://www.cnblogs.com/qingwen/p/5554900.html