中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在應用程序中將OJB作為一個存儲層使用(二) (轉)

發布時間:2020-08-05 02:15:22 來源:ITPUB博客 閱讀:190 作者:gugu99 欄目:編程語言
在應用程序中將OJB作為一個存儲層使用(二) (轉)[@more@]

用OJB PersistenceBroker api實現各種功能:

上面的一段代碼很簡單,因為沒有涉及到存儲操作,僅僅是程序的退出。下面讓我們來

看一個更具體的例子:UCListAllProducts類。該功能必須含有一個Collection類來包含

數據庫中的所有產品,然后將所有產品一一枚舉并顯示出來。為了得到數據庫中的所有

產品,我們需要使用OJB API中的一個方法。

OJB提供三個主要的API:

PersistenceBroker

ODMG實現

JDO實現

在導學1中,我們使用PersistenceBroker API來實現所有的三個功能。導學2 D――使用

ODMG API,導學4 D――使用JDO API將使用不同的數據庫訪問方法來實現同樣的功能。

 

你可以在org.apache.ojb.broker包中找到PersistenceBroker API的源碼。該包中最關

鍵的一個組件就是PersistenceBroker接口。他提供了獲得對象,存儲對象,刪除對象的

功能。在實際使用過程中,你需要獲得一個Broker實例,配置相關的O/R映射關系,才能

使用其提供的功能。

獲得一個Broker實例:

怎樣獲得一個Broker實例?讓我們來從Application類的構造函數中找答案:

public Application()

{

  PersistenceBroker broker = null;

  try

  {

  broker = PersistenceBrokerFactory.

  defaultPersistenceBroker();

  }

  catch (Throwable t)

  {

  t.printStackTrace();

  }

  useCases = new Vector();

  useCases.add(new UCListAllProducts(broker));

  useCases.add(new UCEnterNewProduct(broker));

  useCases.add(new UCDeleteProduct(broker));

  useCases.add(new UCQuitApplication(broker));

}

PersistenceBrokerFactory類使用./repositoty.XML作為映射倉庫創建一個Pesistence

Broker的實例,被創建的PesistenceBroker實例作為一個參數傳到四個UseCase類的構造

函數中去。

獲得Collections和Iterators:

下面我們要做的就是用這個broker實例來進行存儲操作。在這個功能中,我們需要從數

據庫中獲得包含所有產品列表的collection。為了獲得滿足一些條件的collection,我

們可以使用PersistenceBroker.getCollectionByQuery(Query query)方法。其中,Que

ry是一個類,它提供特殊的條件如price>100或者userId=3.在我們的案例中,我們想要

獲得存儲在Product表中的所有記錄,所以我們不需要過濾條件。

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

public void apply()

{

  System.out.println("The list of available products:");

  // build a query that selects all objects of Class Product,

  // without any further criteria according to ODMG the

  // Collection containing all instances of a

  // persistent class is called "Extent"

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

  try

  {

  // ask the broker to retrieve the Extent collection

  Collection allProducts = broker.getCollectionByQuery(query);

  // now iterate over the result to print each product

  Java.util.Iterator iter = allProducts.iterator();

  while (iter.hasNext())

  {

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

  }

  }

  catch (Throwable t)

  {

  t.printStackTrace();

  }

}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

彭阳县| 巢湖市| 吉林市| 城步| 吴桥县| 余干县| 沈阳市| 冀州市| 民丰县| 成都市| 启东市| 林周县| 鄱阳县| 建瓯市| 乌拉特后旗| 新沂市| 白山市| 揭西县| 报价| 木兰县| 新津县| 兰坪| 白朗县| 乡宁县| 通州市| 新昌县| 广丰县| 霞浦县| 嘉祥县| 漳州市| 漳平市| 顺义区| 红原县| 潍坊市| 莫力| 郁南县| 新巴尔虎右旗| 蒙城县| 北辰区| 福州市| 苏尼特左旗|