在應用程式中將OJB作為一個儲存層使用(六) (轉)
Product對映:
現在我們要開始講解從Product類到表PRODUCT的對映。通常這種對映都不是透過
實現,而是透過定義一個。DescriptorRepository類提供了一些方法來讀取
xml檔案並進行初始化。結果就能在以後的程式設計中被使用(也可以透過純程式設計來實現)。
我們已經寫好了我們的對映關係,檔案放置在src/test/ojb/repository.xml,中,xml
檔案如下所示:
<!-- This is a sample metadata repository for the Bridge System.
Use this file as a template for building your own maps-->
<!-- defining entities for include-files -->
]>
isolation-level="read-uncommitted"> <!-- The Default JC Connection. If a class-descriptor does not specify its own Connection, the Connection specified here will be used. --> platform="Hdb" jdbc-level="2.0" ="org.hsqldb.jdbcDriver" protocol="jdbc" subprotocol="hsqldb" lias="/samples/hsql/OJB" username="sa" pass="" /> <!-- include user defined mappings here --> &user; <!-- include mappings for JUnit tests and sample apps here --> &junit; <!-- include ojb internal mappings here --> &internal;
檔案含有很多的資訊:
1. Xml檔案透過repository.dtd來驗證其有效性。這就保證的xml檔案語法的正確性。
確保將dtd檔案放在和xml檔案一樣的目錄,否則xml解析器將會報出找不到DTD的錯誤
2. 對映包含一個預設的JDBCConnectDescriptor。該描述包含了在操作中所用到的
JDBC連線。對於那些沒有定義特殊的JDBCConnectionDescriptor的類來說,都使用該描
述中的預設JDBC連線。
在我們的例子中,描述申明瞭所有的操作都是靠JsqlDb JDBC的,相應的資料庫放在
相應的目錄下面。
3. OJB對映回歸測試。透過包含repository_junit.xml中的XML entity&junit。該ent
ity被定義在一個包含的檔案中:
4. OJB內部的對映。OJB需要一些內部表來進行一次阿操作,如維持資料庫鎖,自動增
長,ODMG的collections和Maps。相應的對映也在這裡實現。他們都正確的操作起重要作
用,應該不能被修改。
這些內部對映透過包含repository_internal.xml中的XML entity&internal來定義
5. 定義的對映。使用者定義的對映包含所有對儲存類做的/關係對映資訊。預設
的,例項的對映在這裡定義。這些對映透過包含repository_user.xml的XML entit
y&user來定義。
現在讓我們來看一下Product類,我把相應的對映放在repository_user.xml中,這樣我們很
容
易找到。從檔案的開頭我們可以看到有一個對Product類的類描述:
<!-- Definitions for org..ojb.broker.Product -->
class="org.apache.ojb.broker.Product" table="PRODUCT" > name="id" column="ID" jdbc-type="INTEGER" primarykey="true" autoincrement="true" /> name="name" column="NAME" jdbc-type="VARCHAR" /> name="price" column="PRICE" jdbc-type="DOUBLE" /> name="stock" column="STOCK" jdbc-type="INTEGER" />
類描述給出了和表相對映的類名稱。
對於每個儲存類的屬性,我們定義一個field-descriptor,對應儲存在資料庫中的每一
列.對於主鍵,我們有一個特別的標記:primarykey="true".主鍵也相應地被設為autoi
ncrement="true",這就告訴了OJB給這個屬性分配一個唯一的ID。這些都是透過一個Se
quenceManager工具類實現的。
Field-descriptor既可以宣告primitive data型,也可以宣告相應的封裝類。
如果你的儲存類中含有其他儲存類的例項,你可以透過reference-descriptor來定義它
們之間的關係。如果儲存類中有array-或是collection-屬性,你可以使用collection-
descriptor屬性。你可以在org.apache.ojb.broker包中找到一些例子,相應的描述在r
epository.xml中。
工具支援:
一般說來,有三種建立O/R對映的方式:
1. Forward engineering。透過給出類(或是UML模型),生成SQL DDL和對映關係
。我們可以使用一個工具從repository.xml生成一個資料庫。build[.sh] forword
-db可以看到forward engineering的工作過程。
2. Reverse engineering。給出SQL DDL或者資料庫,產生Java類和對映。執行build[
.sh] reverse-db可以看到reverse engineering的工作過程。
3. Mapping proper。給出Java類和SQL DDL,產生對映。我們現在還沒有進行果測試,
但是已經列入下一步的計劃中。
結論:
在本文中,我們學習了怎樣給一個簡單的類建立OJB物件/關係對映,在類的例項上透過
OJB PersistenceBroker 進行儲存操作。
接著還有三篇文件,介紹瞭如何使用OJB ODMG API,OJB JDO API和高階O/R對映(包括
1-1,1-n對映,機制,支援多型性和對映繼承)
我們希望該文件會對你有幫助,歡迎提出意見建議。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-963457/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在應用程式中將OJB作為一個儲存層使用(一) (轉)
- 在應用程式中將OJB作為一個儲存層使用(二) (轉)
- 在應用程式中將OJB作為一個儲存層使用(三) (轉)
- 在應用程式中將OJB作為一個儲存層使用(四) (轉)
- 在應用程式中將OJB作為一個儲存層使用(五) (轉)
- FRAM作為程式碼儲存器應用中的單晶片解決方案晶片
- 在.Net中將MailMessage儲存為本地eml檔案(轉)AI
- 將Oracle作為NoSQL文件儲存OracleSQL
- Redis In Action 筆記(六):使用 Redis 作為應用程式元件Redis筆記元件
- 在vue中,localStorage本地儲存應用。Vue
- 將FileSystem轉換為ASM儲存ASM
- Linux系統在儲存技術中的幾項應用(轉)Linux
- Laravel 使用 Elasticsearch 作為日誌儲存LaravelElasticsearch
- 使用NFS作為Glance儲存後端NFS後端
- 在風能和太陽能儲存中的新應用
- 六、層次結構儲存系統
- 如何在安卓應用程式中儲存資料安卓
- 將座標系統儲存為一個檔案.prj
- 在ADO.NET中使用Oracle儲存程式(轉)Oracle
- OJB查詢(一) (轉)
- k8s使用rbd作為儲存K8S
- 在快應用中整合華為AGC雲端儲存服務GC
- Attribute在.NET程式設計的應用(六) (轉)程式設計
- 使用data.js作為統一的資料儲存中心JS
- 如何將複雜的應用邏輯從儲存過程移植到業務層儲存過程
- Unite Mac,將網站轉換為應用程式Mac網站
- 將網站轉化為應用程式Unite for Mac網站Mac
- 儲存網路在企業應用中的安全隱患
- Attribute在.net程式設計中的應用(一) (轉)程式設計
- 雙緩衝在畫板程式中的應用(一) (轉)
- 在一個WEB應用程式中如何實現使用者上下線啊Web
- OceanBase 儲存層程式碼解讀(一)引言
- 如何將html程式碼儲存為Pdf檔案HTML
- 我的六個作業系統安裝方法及其應用(轉)作業系統
- 一個伺服器輕鬆儲存上億資料,TDengine 在北京智慧建築邊緣儲存的應用伺服器
- Taro:將已有微信小程式轉換為多端應用微信小程式
- Kubernetes中的儲存(六)
- 子元件獲取父元件的值,將這個值作為狀態值儲存元件