快速业务通道

JAVA数据对象应用程序接口Castor使用参考 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
rod.markDown( 0.25 ); //价格减少25% prod.setOnSale( true ); } // 明确地提交事务处理 db.commit(); db.close();

如前面所说明的,查询以三个步骤被执行。首先, 使用OQL语句从数据库中创建查询JDO对象。如果有参数,那么第二个步骤包括设定这些paramaters。参数按相同的顺序出现在OQL语句中。第三个步骤包括执行查询和获得 org.exolab.castor.jdo.QueryResults 类型的结果集合。

查询能创建一次多次执行。每次它执行完成相关的参数自动消失,第二次查询必须再次提供。当查询第二次被执行时(有可能得到是不同的查询结果),上次查询的结果(旧的)还是能继续使用。

查询的一种特殊的形式提供了调用存储过程的可能性。

如:

oql = db.getOQLQuery( "CALL sp_something($) AS myapp.Product" );

这里sp_something是一个存储过程返回一个或更多ResultSet对象,这些对象的顺序和OQL查询“SELECT p FROM myapp.Product p”的得到的顺序是相同的。(对于一个没有关联的数据库他的顺序是首先按照唯一主键排列其次按照mapping.xml中指明的字段顺序排列)

JDO对象的插入,删除和修改

方法create(java.lang.Object)在数据库中创建一个新的对象或者用JDO术语来说是:''持久化瞬时对象。'' 以create方法创建的对象仍然是在提交数据库事务中被存储入数据库。一旦提交数据库回滚事务,那么会在数据库中上删除这条纪录。如果发生主键冲突,那么将抛出(identity already exists in the database)异常。下列的代码片断创建一种新的 塑料转椅对象(属于产品类) 并把它关联到以前查询的得到的 furnitures (产品归类) 对象中去:

Product prod;

// 创建一个塑料转椅对象

prod = new Product();

prod.setSku( 5678 );

prod.setName( "塑料转椅" );

prod.setPrice( 55.0 );

prod.setGroup( furnitures ); //加入到产品归类的家具归类实例中

// Make is persistent

db.create( prod ); // 存储

remove方法(java.lang.Object)是和create方法相反的操作。是删除一个持久的JDO对象。一旦提交数据库事务处理,该对象就会在数据库中被删除, 同时在全部其他事务处理中消失。

不过,一旦提交回滚,那么对象将仍然保留在数据库中。

还有如果试图删除的纪录不存在,那么将抛出异常。

JAVA数据对象应用程序接口Castor使用参考(4)

时间:2011-02-15

使用JDO和XML

XML在实际应用中越来越重要,可以说它的重要性仅次于DATABASE。结合执行Castor JDO和Castor XML能使得以XML作为输入和输出的形式来处理数据库操作等等事务。这样能够大大提升你的软件的应用范围,同时并不需要付出很大的代价。

下列的代码片断结合持久JDO对象和瞬时DO对象来描述一种金融的操作。在这个例子中,我们要作的是:把金额从一个账号转账到另外一个账号中。这两个账号对象原来是存在数据库中的。转账处理完毕后还必须把转账过程用XML文件表达出来。

在下面的实现中,我们将转账过程使用瞬时对象(即在数据库中没有记录对应)描述,然后被用来产生描述转账过程的XML文件。通过调用一个额外程序(篇幅限制,这里不作详细解释)用XSLT来把XML文件转变成为HTML页格式来描述转账过程。

Transfer tran; Account from; Account to; OQLQuery oql; tran = new Transfer(); // 建造查询并且装载两个账号 oql = db.getOQLQuery( "SELECT a FROM Account a WHERE Id=contentquot; ); oql.bind( fromId ); from = oql.execute().nextElement(); oql.bind( toId ); to = oql.execute().nextElement(); // 转账处理 if ( from.getBalance() >= amount ) { from.decBalance( amount ); to.incBalance( amount ); trans.setStatus( Transfer.COMPLETE ); trans.s

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号