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

  在应用程序中将OJB作为一个存储层使用(二)(转)[@more@]

用OJB PersistenceBroker api实现各种功能:

  

上面的一段代码很简单,因为没有涉及到存储操作,仅仅是程序的退出。下面让我们来

  

看一个更具体的例子:UCListAllProducts类。该功能必须含有一个集合类来包含

  

数据库中的所有产品,然后将所有产品一一枚举并显示出来。为了得到数据库中的所有

  

产品,我们需要使用OJB API中的一个方法。

  

OJB提供三个主要的API:

  

PersistenceBroker   

ODMG实现   

JDO实现   

在导学1中,我们使用PersistenceBroker API来实现所有的三个功能。导学2 D——使用

  

ODMG API,导学4 D——使用JDO API将使用不同的数据库访问方法来实现同样的功能。

  

,

  

你可以在org.apache.ojb。代理包中找到PersistenceBroker API的源码。该包中最关

  

键的一个组件就是PersistenceBroker接口。他提供了获得对象,存储对象,删除对象的

  

功能。在实际使用过程中,你需要获得一个代理实例,配置相关的O/R映射关系,才能

  

使用其提供的功能。

  

获得一个代理实例:

  

怎样获得一个代理实例?让我们来从应用程序类的构造函数中找答案:

  

公共应用程序()

  

{

  

,PersistenceBroker代理=零;

  

,试着

  

,{

  

,代理=PersistenceBrokerFactory。

  

,defaultPersistenceBroker ();

  

,}

  

,抓住(Throwable t)

  

,{

  

,t.printStackTrace ();

  

,}

  

,可变性=new向量();

  

,可变性。添加(新UCListAllProducts(代理));

  

,可变性。添加(新UCEnterNewProduct(代理));

  

,可变性。添加(新UCDeleteProduct(代理));

  

,可变性。添加(新UCQuitApplication(代理));

  

}   

PersistenceBrokerFactory类使用。/repositoty。XML作为映射仓库创建一个Pesistence

  

代理的实例,被创建的PesistenceBroker实例作为一个参数传到四个UseCase类的构造

  

函数中去。

  

获得集合和迭代器:

  

下面我们要做的就是用这个代理实例来进行存储操作。在这个功能中,我们需要从数

  

据库中获得包含所有产品列表的集合。为了获得满足一些条件的收集,我

  

们可以使用PersistenceBroker。getCollectionByQuery查询(查询)方法,其中,,

  

集聚是一个类,它提供特殊的条件如价格> 100或者的用户id=3。在我们的案例中,我们想要

  

获得存储在产品表中的所有记录,所以我们不需要过滤条件。

  

下面是UCListAllProducts.apply()方法的代码:

  

公共无效申请()

  

{

  

,system . out。println(“可用产品的列表:”);

  

,//构建查询,选择所有对象类产品,

  

,//没有任何进一步根据ODMG标准

  

,//集合包含一个

的所有实例   

,//持久化类被称为“程度”

  

,查询查询=new QueryByCriteria(产品。类,null);

  

,试着

  

,{

  

,//请求代理检索集合程度

  

,收集allProducts=broker.getCollectionByQuery(查询);

  

,//遍历结果打印每个产品

  

,Java.util。迭代器iter=allProducts.iterator ();

  

,而(iter.hasNext ())

  

,{

     

,System.out.println (iter.next ());

  

,}

  

,}

  

,抓住(Throwable t)

  

,{

  

,t.printStackTrace ();

  

,}

  

}


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