您好,登錄后才能下訂單哦!
用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();
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。