快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
在进行的处理的事务,并在适当的时间的提交或会滚数据库请求下列的代码片断展示了如何利用依赖于容器管理事务:

InitialContext ctx;

UserTransaction ut;

Database db;

// 用JNDI的查询得到databse对象

ctx = new InitialContext();

db = (Database) ctx.lookup( "java:comp/env/jdo/mydb" );

// 业务逻辑

. . .

// 关闭数据库

db.close();

使用JDO数据库对象

区别瞬时JDO对象和持久JDO对象

所有JDO操作在事务处理的上下文之内发生。

JDO通过把数据库中的数据装载到内存中的对象,并允许应用程序修改对象,然后存储对象的新的状态到数据库中去当应用程序提交事务时。

所有对象只可能有两种状态: 瞬时或者持久(Transient / Persistent)

瞬时: 瞬时JDO对象,当应用程序提交事务时,其状态将不被保存到的数据库。瞬时JDO对象的变化将不在数据库中反映出来。

持久:持久JDO对象当应用程序提交事务时,其状态将被保存的任何对象数据库。持久JDO对象的变化将在数据库中反映出来。

一个对象可以有两种途径变成为持久JDO对象: 它是由查询产生的,(该查询不是被设置为只读方式)或者 否则它用create(java.lang.Object)或者update(java.lang.Object)方法来存入数据库。

· 所有不是持久JDO对象的对象是瞬时JDO对象。

· 当应用程序提交事务或者回滚时,所有持久JDO对象自动变回得瞬时JDO对象。在Client应用中,我们可以使用begin(),commit()和rollback()管理事务。但是在J2EE应用中,依赖于容器的JDO对象或者是隐含地(基于Bean的事务属性)或者是明确地使用javax.transaction.UserTransaction接口来管理事务。

如果一个持久JDO对象在处理期间被修改,在应用程序提交事务时相关的修改被存入数据库。一旦事务回滚,将不会有任何相关的修改存入数据库。

一旦事务处理完成,对象将再一次变回瞬时JDO对象。为了在两种不同的事务处理中使用相同的对象,你必须再一次提交查询来生成它。

一个JDO对象是属于瞬时JDO对象还是持久JDO对象取决于当时的数据库处理是处在那个事务处理中。在实际环境中,往往会发现一个JDO对象在一个的数据库连接中属于持久JDO对象,而在另一个数据库连接将返回调用isPersistent(java.lang.Object)却返回false(就是说它是瞬时JDO对象)。这使得可以让一个JDO对象同时在2个数据库连接属于持久态:在一个数据库连接查询它在另一个数据库连接创建它。

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

时间:2011-02-15

OQL查询

OQL查询通常用于在数据库中查找并创建一个JDO对象. OQL查询盒类似于SQL查询,不过用对象名称而不是 SQL名称并且不支持join子句。例如,如果所装载的对象是TestObject类,OQL查询将从TestObject加载,而不管数据库的实际的表名称是test,test_object还是任何其它名称。如果相关的对象需要join操作,Castor将自动地执行join操作。下列的代码片断使用OQL查询来将所有对象装载在一个给定的组中。注意,产品表和产品组表是相关的对象,JDBC查询包括了join操作:

OQLQuery oql; QueryResults results; // Construct a new query and bind its parameters // 建造一个新的查询并且设定其参数 oql = db.getOQLQuery( "SELECT p FROM Product p WHERE Group=$1" ); oql.bind( groupId ); // 取回结果并且逐个打印 results = oql.execute(); while ( results.hasMore() ) { System.out.println( results.next() ); }

下列的代码片断使用上面的查询结果来获得Product对象,把他们的价格减少25%,并且把修改的结果存储到数据库(本例采用Client应用模式):

while ( results.hasMore() ) { Product prod; prod = (Product) results.next(); //获得Product对象 p

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号