exolab旗下的castor是目前流行的、開放源碼的JDO實現包。它主要用來實現O/R Mapping。運用該軟體包可以大大減輕程式員在處理對象-關聯式資料庫 的負擔。本文介紹了Castor的基本用法, 並用有大量代碼執行個體進行解釋。
內容提要:
· 開啟JDO資料庫 Client應用
· J2EE應用
· 使用JDO資料庫物件
· 區別瞬時JDO對象和持久JDO對象
· OQLQuery
· 建立與更新和刪除
· 使用JDO和XML
開啟JDO資料庫
Castor JDO支援兩種類型的環境,Client應用和J2EE伺服器。Client應用被用來負責設定資料庫串連和明確地管理事務。J2EE應用使用JNDI來獲得預先設好的資料庫連接並利用UserTransaction或容器管理事務(CMT)來處理事務。如果你曾經在這兩種環境中使用過JDBC,那麼應該比較熟悉這兩種模型和他們之間的區別。
Client應用
Client應用負責定義JDO資料庫配置,和明確地管理交易處理。資料庫通過一個單獨的XML檔案被配置 並串連到一個Mapping檔案。在例子代碼中我將資料庫檔案命名為database.xml,但是你可以使用任何別的名稱。更多資訊參見Castor JDO資料庫配置。
org.exolab.castor.jdo.JDO定義資料庫名稱和屬性並且被用來開啟資料庫連接。在上
可以通過設定setConfiguration檔案的URL來要求JDO層裝載哪個資料庫配置。注意:Castor JDO在建立多個用同樣的配置的JDO對象的情況下,將會僅僅只執行一次裝載資料庫配置。
org.exolab.castor.jdo.Database對象代表資料庫的一個開啟的串連。
線程 JDO對象定義不是安全執行緒的,因此不應該在並發多線程中使用JDO對象。還有,建立多個JDO對象僅僅 需要少量額外工作,而JDBC串連在每個交易處理中僅僅開啟一次。這樣處理的模式能夠大大提高效能。
下列的代碼片斷展示了在Client應用中很常用的組合:“開啟資料庫,執行SQL,關閉資料庫。”
JDO jdo;
Database db;
// 定義JDO對象
jdo = new JDO();
jdo.setDatabaseName( "mydb" );
jdo.setConfiguration( "database.xml" );
jdo.setClassLoader( getClass().getClassLoader() );
// 開啟一個新的資料庫連接
db = jdo.getDatabase();
// 開始處理事務
db.begin();
// 以下是一些商務邏輯
. . .
// 提交交易處理,並且關閉資料庫
db.commit();
db.close();