在应用程序中将OJB作为一个存储层使用(四)

原创 2003年09月23日 01:33:00

删除对象:

UCDeleteProduct类允许用于从products中选择一条记录并将它从存储库中删除。用户输

入产品的productId,broker试着查找指定的product。我们不需要拥有真个产品目录,

所以查找是很有必要的。Broker接着将找到的product删除,代码如下:

public void apply()

{

    String in = readLineWithMessage("Delete Product with id:");

    int id = Integer.parseInt(in);

    // We do not have a reference to the selected Product.

    // So first we have to lookup the object,

    // we do this by a query by example (QBE):

    // 1. build an example object with matching primary key values:

    Product example = new Product();

    example.setId(id);

    // 2. build a QueryByCriteria from this sample instance:

    Query query = new QueryByCriteria(example);

    try

    {

        // start broker transaction

        broker.beginTransaction();

        // lookup the product specified by the QBE

        Product toBeDeleted = (Product) broker.getObjectByQuery(query);

        // now ask broker to delete the object

        broker.delete(toBeDeleted);

        // commit transaction

        broker.commitTransaction();

    }

    catch (Throwable t)

    {

        // rollback in case of errors

        broker.abortTransaction();

        t.printStackTrace();

    }

}

在本文中,QueryByCriteria方法被用来使功能实现变得简单,代码更加少。我们也可以

通过Criteria对象创建一个指定过滤条件的查询,下面的代码简单地实现了通过Criter

ia对象来创建一个查询:

// build filter criteria:

    Criteria criteria = new Criteria();

    criteria.addEqualTo(_id, new Integer(id));

    // build a query for the class Product with these filter criteria:

    Query query = new QueryByCriteria(Product.class, criteria);

...

我们可以任意地指定条件来创建复杂的查询。下面的代码通过Criteria类实现了一个更

复杂查询,它将获得所有价格少于5。40,并且至少有两百万库存量的产品目录:

// build filter criteria:

    Criteria criteria = new Criteria();

    criteria.addLessThan("price", new Double( 5.40 ));

    criteria.addGreaterThan("stock", new Integer( 2000000 ));

    // build a query for the class Product with these filter criteria:

    Query query = new QueryByCriteria(Product.class, criteria);

...

完成实例程序:

实例程序的完成工作留给读者自己。

现在你应该已经对OJB PesistenceBroker的基本功能很熟悉。为了更好的深入,你可以

考虑实现下面的额外功能:

1. 列出所有价格大于1000的产品目录(或者让用户输入条件)

2. 删除所有库存量为0的产品

3. 给所有价格低于500的产品提价11%(并存入存储库)

在应用程序中将OJB作为一个存储层使用(六)

Product映射: 现在我们要开始讲解从Product类到数据库表PRODUCT的映射。通常这种映射都不是通过 编程实现,而是通过定义一个xml文件。DescriptorRepository类提供了...
  • Emolasa
  • Emolasa
  • 2003年09月23日 01:33
  • 828

在应用程序中将OJB作为一个存储层使用(五)

定义对象/关系映射: 在看了实例程序的源代码和数据库(运行bin/build browse -db将会启动InstantDB数据 库的浏览窗口)后,你可能会问:在程序中我们并没用看到任何关于数据存储的...
  • Emolasa
  • Emolasa
  • 2003年09月23日 01:36
  • 916

在应用程序中将OJB作为一个存储层使用(一)

介绍: 本文通过一个简单的例子说明了怎样使用对象关系映射桥(OJB)。例子程序含有义产品 目录数据库和一些用户功能。程序的源代码随OJB源代码一起发布,包含在org.apache. ojb.tutor...
  • Emolasa
  • Emolasa
  • 2003年09月23日 01:35
  • 912

在应用程序中将OJB作为一个存储层使用(二)

用OJB PersistenceBroker API实现各种功能: 上面的一段代码很简单,因为没有涉及到存储操作,仅仅是程序的退出。下面让我们来 看一个更具体的例子:UCListAllProducts...
  • Emolasa
  • Emolasa
  • 2003年09月23日 01:32
  • 735

在应用程序中将OJB作为一个存储层使用(三)

如果在product表中有10000条记录,那么从存储库中获得所有得记录是一个很费时的操 作,每个记录都必须新建一个对象,整个表都要读入内存。在示例程序中,没有考虑性 能问题,但是在一个实际的应用OJ...
  • Emolasa
  • Emolasa
  • 2003年09月23日 01:33
  • 768

搭建存储层

    首先抛开程序意义上的存储工具,从现实的角度考虑存储层所需要的几个条件.    我想大概有以下几点:    一、存储微粒          一个存储微粒可以比做计算机所认识的0/1;      ...
  • hanyuhen1
  • hanyuhen1
  • 2010年03月23日 13:56
  • 134

2.存储层

commitlog 存储路径默认为$HOME/store/commitlog,可以在broker启动时通过storePathCommitLog设置,存储的文件如下图所示,默认大小为1G: 数据过...
  • a417930422
  • a417930422
  • 2016年09月19日 13:57
  • 1029

在IIS 中没有将虚拟目录作为应用程序进行配置

在应用程序级别以外使用注册为 allowDefinition=MachineToApplication 的节是错误的。导致该错误的原因可能是在 IIS 中没有将虚拟目录作为应用程序进行配置解决办法:在...
  • ltlqltlq
  • ltlqltlq
  • 2006年11月15日 14:47
  • 926

Java: 第一次尝试Java,Thread类

A thread is a thread of execution in a program. The Java Virtual Machine allows an application to ha...
  • olojiang
  • olojiang
  • 2007年04月04日 18:50
  • 2019

只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 // 节中包括 System.Web.SessionStateMod 或自定义会话状态模块 -

      使用VS2010设计Asp.net时出现: 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 ...
  • zorsbutape
  • zorsbutape
  • 2011年05月08日 20:52
  • 4187
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在应用程序中将OJB作为一个存储层使用(四)
举报原因:
原因补充:

(最多只允许输入30个字)