在應用程式中將OJB作為一個儲存層使用(五) (轉)
定義/關係對映:
在看了例項的和(執行binuild browse -將會啟動InstantDB資料
庫的瀏覽視窗)後,你可能會問:在程式中我們並沒用看到任何關於資料的程式碼,
OJB Broker是怎麼樣實現把Product類的資訊儲存到PRODUCT表中去的?OJB怎麼樣知道把
資料庫中的NAME列對映到name屬性上?
答案就是一切都是在OJB後設資料庫中進行的。庫中包含了一些類來描述O/R對映(可以參
考org..ojb.broker.metadata包)。庫中含有一些普遍的物件,這些物件能
夠被動態的建立和修改。這給那些需要動態改變對映關係的情況提供了很大的便利。保
持動態對映有下面幾個好處:
1. 不需要Java原始碼的處理,不需要儲存庫的編譯。
2. 對映能夠在執行時被檢查、改變,允許最大限度的改變儲存行為或是在OJB上建立自
己的儲存層。
但是也有一個缺點:問題。OJB的動態方法使用了Java的反射機制和JavaBean的訪問
機制來檢查和修改商業物件,我們必須把動態訪問的次數降到最少。
在下面的章節,我們將講解例項程式怎樣使用O/R對映。
一個儲存類:Product
在我們的例項程式中只有一個儲存類,Product類,下面是它的定義:
package org.apache.ojb.tutorial1;
/**
* represents product s in the tutorial system
*/
public class Product
{
/** product name*/
protected String name;
/** price per item*/
protected double price;
/** stock of currently available items*/
protected int stock;
...
}
我刪除了其中的方法定義,他們與O/R對映過程無關。
資料庫中的Product表:
現在讓我們來看一下表,用 DDL來定義(我給出了InstantDB的語法,在不同的RDBM
S中語法可能會有不同):
CREATE TABLE PRODUCT (
ID INT PRIMARY KEY,
NAME CHAR(100),
PRICE DOUBLE,
STOCK INT
)
你可能發現了我加了一列ID,並設為主鍵。這是手工加入的,它並不屬於程式中的prod
uct。如果你使用了手工加入,你必須在你的Product類中加入這一屬性。OJB要求所有表
的主鍵列必須在相應的class中有對映。這也是儲存層中少數需要遵守的規則之一,因為
這些屬性並不是OOD模型的必須部分。
所以我們必須修改我們一開始的類:
public class Product
{
/**
* this is the primary key attribute needed by OJB to
* ntify instances
*/
private int _id;
/** product name*/
protected String name;
/** price per item*/
protected double price;
/** stock of currently available items*/
protected int stock;
}
除了主鍵要求外,再沒有任何其他的限制。沒有必要擴充套件基類去實現所有的介面,這就
是我們為什麼說OJB是透明儲存的原因。
非常重要的一點:儲存類必須有一個公共無引數的構造。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-963459/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在應用程式中將OJB作為一個儲存層使用(一) (轉)
- 在應用程式中將OJB作為一個儲存層使用(二) (轉)
- 在應用程式中將OJB作為一個儲存層使用(三) (轉)
- 在應用程式中將OJB作為一個儲存層使用(四) (轉)
- 在應用程式中將OJB作為一個儲存層使用(六) (轉)
- FRAM作為程式碼儲存器應用中的單晶片解決方案晶片
- 在.Net中將MailMessage儲存為本地eml檔案(轉)AI
- 將Oracle作為NoSQL文件儲存OracleSQL
- 在vue中,localStorage本地儲存應用。Vue
- 將FileSystem轉換為ASM儲存ASM
- Attribute在.NET程式設計中的應用(五) (轉)程式設計
- Linux系統在儲存技術中的幾項應用(轉)Linux
- Laravel 使用 Elasticsearch 作為日誌儲存LaravelElasticsearch
- 使用NFS作為Glance儲存後端NFS後端
- 在風能和太陽能儲存中的新應用
- 如何在安卓應用程式中儲存資料安卓
- 將座標系統儲存為一個檔案.prj
- 在ADO.NET中使用Oracle儲存程式(轉)Oracle
- 在一個硬碟上安裝五個作業系統(轉)硬碟作業系統
- 在快應用中整合華為AGC雲端儲存服務GC
- OJB查詢(一) (轉)
- 使用data.js作為統一的資料儲存中心JS
- 如何將複雜的應用邏輯從儲存過程移植到業務層儲存過程
- 儲存網路在企業應用中的安全隱患
- Unite Mac,將網站轉換為應用程式Mac網站
- 將網站轉化為應用程式Unite for Mac網站Mac
- [譯] 在大型應用中使用 Redux 的五個技巧Redux
- Attribute在.net程式設計中的應用(一) (轉)程式設計
- 雙緩衝在畫板程式中的應用(一) (轉)
- 在一個WEB應用程式中如何實現使用者上下線啊Web
- OceanBase 儲存層程式碼解讀(一)引言
- 如何將html程式碼儲存為Pdf檔案HTML
- 一個伺服器輕鬆儲存上億資料,TDengine 在北京智慧建築邊緣儲存的應用伺服器
- 子元件獲取父元件的值,將這個值作為狀態值儲存元件
- Wpf應用程式作為一個單獨的可執行檔案
- Taro:將已有微信小程式轉換為多端應用微信小程式
- Shell的五個小應用(轉)
- 將網站轉化為應用程式:Unite mac啟用版網站Mac