ObjectiveSQL 源碼解讀——DomainModelDescriptor

DomainModelDescriptor 設計的初衷是爲了適應不一樣類型的模型定義可以經過ObjectiveSQL 寫入數據庫或從數據庫中讀取,在JDK 中也有相似的設計,如PropertyDescriptor,BeanDescriptor 等,其目的也是描述Java Bean 和Property 的基礎元信息,只不過在ObjectiveSQL 中DomainModelDescriptor 是一個抽象的定義,描述的是一個可以被ObjectiveSQL 所認識的業務模型,能夠是一個Java Bean,也能夠是其它對象。java

在我過往的項目中,除了經常使用的Java Bean 模型能夠進行數據庫的訪問,還會存在一些其它類型的模型同時也須要進行數據庫存儲,具體示例以下:git

過程介紹:github

  1. 一般數據量過大的狀況下會採用Apache Fluent 進行數據緩存,而後集中入庫(單批次數據量超過50 萬行記錄)
  2. 數據須要通過不一樣系統間傳輸,也就意味着須要定義傳輸和存儲結構,ProtoBuffer 是比較合適的結構定義,不管是擴展性、壓縮和解壓效率都很優秀,因此咱們選擇ProtoBuffer 進行結構定義和數據傳輸
  3. ProtoBuffer 有自身的數據載體,和普通Java Bean 不同,若是將數據轉換成Java Bean 會產生額外的性能開銷,須要通過DomainModelDescriptor 描述後,ObjectiveSQL 才能授受這樣的模型

上文描述的是一種 DomainModelDescriptor 的場景,因爲不一樣使用場景下,數據模型的結構也不同,ObjectiveSQL 充分考慮了場景的變化,因此抽象出DomainModelDescriptor,爲數據庫訪問提供必要的元信息。sql

相關文章
相關標籤/搜索