本節討論 ClusterJ API 和用於表示應用程式處理的資料的物件模型。
應用程式介面。 ClusterJ API 依賴於 4 個主要介面:Session
、SessionFactory
、Transaction
和 QueryBuilder
。
Session 介面。 對 NDB Cluster 資料的所有存取都是在工作階段的內容中完成的。Session
介面表示使用者或應用程式與 NDB Cluster 的個別連線。它包含以下操作的方法
依主索引鍵尋找持續性執行個體
建立、更新和刪除持續性執行個體
取得查詢建立器 (請參閱 com.mysql.clusterj.query.QueryBuilder)
取得目前交易 (請參閱 com.mysql.clusterj.Transaction)。
SessionFactory 介面。 工作階段是從 SessionFactory
取得的,通常對於您想要從 Java VM 存取的每個 NDB Cluster 都有一個執行個體。SessionFactory
儲存有關叢集的組態資訊,例如 NDB Cluster 管理伺服器的主機名稱和埠號。它還儲存有關如何連線到叢集的參數,包括連線延遲和逾時。如需有關 SessionFactory 及其在 ClusterJ 應用程式中的使用的詳細資訊,請參閱 取得 SessionFactory 並取得工作階段。
Transaction 介面。 交易不由 Session
介面管理;與其他現代應用程式架構一樣,ClusterJ 將交易管理與其他持續性方法分開。交易劃分可以由容器或 Web 伺服器 Servlet 篩選器自動完成。從 Session
中移除交易完成方法有助於這種職責分離。
Transaction
介面支援交易型資料庫所需的標準開始、提交和回滾行為。此外,它還讓使用者能夠將交易標記為僅回滾,這使得不負責完成交易的元件可以指出 – 由於應用程式或資料庫錯誤 – 不得允許交易正常完成。
QueryBuilder 介面。 QueryBuilder
介面可以使用網域物件模型屬性作為查詢建模元素,動態建構條件查詢。可以指定參數與資料庫欄位值之間的比較,包括等於、大於和小於、介於和在運算中。這些比較可以使用對應於布林運算子 AND、OR 和 NOT 的方法來組合。也支援將值與 NULL
進行比較。
資料模型。 ClusterJ 使用網域物件提供對 NDB Cluster 中資料的存取,在許多方面都類似於 JPA 模型資料的方式。
在 ClusterJ 中,網域物件對應具有以下特性
-
所有資料表都對應到持續性介面。對於叢集中的每個
NDB
資料表,ClusterJ 都使用一個或多個介面。在許多情況下,會使用單一介面;但是,對於應用程式的不同部分需要不同欄位的情況,可以將多個介面對應到同一個資料表。但是,類別本身不是持續性的。
-
使用者將欄位的子集對應到介面中的持續性屬性。因此,所有屬性都會對應到欄位;但是,並非所有欄位都一定會對應到屬性。
所有 ClusterJ 屬性名稱預設為欄位名稱。介面會為每個屬性提供 getter 和 setter 方法,並具有可預測的對應方法名稱。
介面上的註釋會定義對應。
下圖說明了應用程式環境和網域物件的使用者檢視,該圖顯示了 ClusterJ 介面建模元素之間的邏輯關係
SessionFactory
由屬性物件組態,該物件可能是從檔案載入的,也可能是由應用程式使用其他方式動態建構的 (請參閱 第 4.2.2.1 節, 「執行 ClusterJ 應用程式和工作階段」)。
應用程式從 SessionFactory
取得 Session
執行個體,一次最多一個執行緒使用一個 Session
。如果應用程式需要多個資料庫連線,則執行緒可以管理多個 Session
執行個體。
每個工作階段都有自己的網域物件集合,每個網域物件都表示資料庫中一個資料列的資料。網域物件可以表示以下任何狀態的資料
新;尚未儲存在資料庫中
從資料庫擷取;可供應用程式使用
已更新;要儲存回資料庫
要從資料庫中刪除