熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

優秀的對象角色建模解決方案-Torque

2013-11-23 18:39:43  來源: Java核心技術 

  目前對於JEE應用中的Persistence Layer的解決方案很多其中最近從Apache Turbine中剝離處理的Torque是一個優秀的ORM(Object Relational Mapping對象角色建模) 解決方案
  
  
  
    主流的Persistence Layer解決方案
  
  
  
    隨著基於JEE應用的日益增加出現了很多Persistence Layer的解決方案目前主要的解決方案有以下幾種
  
  
  
    ◆ 自己編寫基於JDBC API的解決方案
  
  
  
    ◆ 采用ObjectRational Mapping(ORM)工具或者是采用面向對象的數據庫(ODBMS)
  
  
  
    ◆ JEE/Entity Bean CMP (containermanaged persistence)
  
  
  
    ◆ JDO
  
  
  
    JDBC
  
  
  
    在很多情況下尤其是沒有采用良好的Persistence Layer解決方案的項目中開發人員需要自己手動編寫SQL語句同時還要考慮事務處理等問題從而使得SQL語句散落在代碼中可維護性很差同時由於每個項目都要重新編寫Persistence 相關的代碼所以代碼可重用性差另外要求開發人員對於SQL語法必須非常熟悉否則調試也比較困難
  
  
  
    使用JDBC的解決方案數據必須存儲在關系型數據庫中
  
  
  
    ORM或者ODBMS
  
  
  
    為了將開發人員從SQL語句中解脫出來產生了很多ORM的工具這些工具都比較簡單並且提供了API支持
  
  
  
    由於ORM工具比較多它們采用的技術標准都不盡相同而且沒有統一的接口因此它們在為開發人員提供方便的同時也增加了一定的束縛ORM技術是比較成熟的而且已經有很多產品了
  
  
  
    而ODBMS是近幾年發展起來的並不十分成熟而且也沒有得到廣泛的應用目前眾多ODBMS廠商正在關注JDO標准並加以實施它可能在不久的將可以得到一定的推廣
  
  
  
    使用ORM或者ODBMS的解決方案數據也必須存儲在關系或者面向對象數據庫中
  
  
  
    EJB CMP
  
  
  
    在JEE的規范中為EJB定義了兩種Persistence的解決方案一種是BMP另一種是CMP其中CMP不需要將SQL語句加入到代碼中
  
  
  
    目前在采用JEE的應用中EJB CMP方式得到了廣泛應用更加引人注意的是隨著EJB規范的發展CMP也包含了一些高級關系的內容但是CMP的使用比較復雜對很多開發人員來說比較難以掌握而且不是在所有的情況下都適合在系統中采用EJB
  
  
  
    EJB提供了除了關系型數據庫以外更多的存儲支持
  
  
  
    JDO
  
  
  
  目前有兩種類型的JDO實現一種是Sun的JDO另一種是Castor JDO這兩者並不兼容
  
  
  
    Sun JDO是Sun Java Community Process給出的規范和參照實現盡管JDO還有些不成熟但它很有發展前景而且填補了數據庫編程領域的一大空白對Java開發人員而言JDO為對象持久性提供了第一個標准化的完全面向對象的方法與此領域中的其它技術相比JDO的優點是使用起來十分簡單而且對原始的Java源代碼打亂程度最小同時Sun JDO對數據存儲類型是透明的
  
  
  
    而Castor JDO是一個開源項目年開始開發在開源的JDO項目中它提供的功能是最強大的盡管Castor JDO開發的比較早但是隨著Sun JDO的日益成熟它的優勢越來越小同時Castor JDO只提供對RDMS的支持
  
  
  
    從上面的分析我們可以看到由於目前絕大多數應用系統的數據都是存儲在RDMS中而且JDO目前還不十分完善因此在項目中還是應該采用成熟的ORM工具
  
  
  
    Torque
  
  
  
    Torque是一種ORM的工具它最早是Apache Jakarta Turbine項目的一部分現在已經從Turbine中剝離出來可以獨立使用目前它的版本是
  
  
  
    Torque的主要特性
  
  
  
    Torque主要包含兩部分一部分是Generator它可以產生應用需要的所有數據庫資源包括sql和java文件另外Torque還提供了一個運行環境來運行產生的類下面主要討論Torque 的Generator
  
  
  
    . 三個核心文件
  
  
  
    要利用Torque的Generator必須配置好以下三個文件(Torque的安裝路徑為$Torque_home)
  
  
  
    ◆ $Torque_home/buildproperties 存儲數據庫系統的屬性主要有項目名稱數據庫類型數據庫鏈接URLDriver用戶名密碼及主機名等Torque利用該文件的屬性建立與數據庫系統的連接
  
  
  
    ◆ $Torque_home/schema/projectschemaxmlidtableschemaxml 其中projectschemaxml 存儲表結構信息而idtableschemaxml由Torque的IDBroker服務調用
  
  
  
    ◆ $Torque_home/Torqueproperties 存儲應用執行時由Torque生成的對象模型代碼使用的屬性值在生成數據庫系統資源的時候不需要這個文件
  
  
  
     核心任務
  
  
  
    利用Torque提供的Generator可以完成下面的主要任務
  
  
  
    ◆ sql 解析$Torque_home/schema/*xml生成對應的$Torque_home/src/sql/*sql文件
  
  
  
    ◆ doc 解析$Torque_home/schema/*xml生成對應的$Torque_home/src/sql/l文件描述數據庫結構
  
  
  
    ◆ createdb 生成不同平台上產生數據庫系統的腳本
  
  
  
    ◆ insertsql 執行$Torque_home/schema/*schemasql文件到指定數據庫
  
  
  
    ◆ sqlxml 解析$Torque_home/schema/schemasql文件產生Torque對應的數據庫文件$Torque_home/schema/schemaxml
  
  
  
    ◆ idtableinitsql 根據$Torque_home/schema/idtableschemaxml文件產生id表的初始化腳本文件
  
  
  
    上述任務需要ANT的支持運行命令為$Torque_home/antf buildtorquexml $taskname
  
  
  
     Peer
  
  
  
  Peer是Torque使用的ORM工具它比其它的工具(例如CastorOsage等)的層次要低開發人員需要手工編寫一些代碼但是這從一定意義上增加了靈活性
  
  
  
    Peer利用Torque數據庫Adaptor類來建立與數據庫的連接因為它支持主流的數據庫系統所以開發人員一般情況下不需要為數據庫系統編寫Adaptor
  
  
  
    在建立了項目數據庫系統的Schema文件後運行ant f buildtorquexmlTorque為Schema 中的每個表的對象模型生成四個類例如開發人員在projectschemaxml 中定義了Author表則Torque生成的四個類為AuthorAuthorPeer BaseAuthorBaseAuthorPeer等其中Author和AuthorPeer分別是BaseAuthor和BaseAuthorPeer 的子類這兩個基類(BaseAuthorBaseAuthorPeer)包含了Torque的生成邏輯在開發中不應該修改因為Torque會在再次生成對象模型時覆蓋這些文件所以系統中的業務邏輯應該放在Author和AuthorPeer類中
  
  
  
    在Torque中AuthorPeer和BaseAuthorPeer稱為對等類(Peer Classes)而Author和BaseAuthor稱為數據對象(Data Objects)對等類和數據對象之間的區別是對等類封裝數據表信息並提供靜態方法對表進行增加刪除修改記錄的操作數據對象封裝表中的記錄信息並對每個字段提供getters/mutators方法
  
  
  
     Criteria
  
  
  
  Criteria是一對SQL查詢標准的抽象對象開發人員利用它來封裝特定的SQL語句Criteria實際上是SQL語句中域名和值之間的映射默認的Comparator是等於(=)同時它還提供基本的Comparator以及JoinOrder byDistinct等更多的方法及屬性請查看orgapachetorqueutil
  
  
  
  Criteria
  
  
  
    Criteria提供了一般意義上的SQL功能如果仍然不能滿足開發的需要開發人員仍然可以手寫SQL語句
  
  
  
    Torque在JEE中的應用
  
  
  
    在Apache Jakarta的項目中有很多Web 應用構架其中StrutsCocoon及Turbine是比較著名的幾個
  
  
  
  Torque作為數據庫抽象的工具雖然是從Turbine中剝離出來的但是它可以與其它的構架很好地結合成為Persistence層的優秀解決方案
  
  
  
    應用步驟
  
  
  
    在JEE應用使用Torque的步驟如下
  
  
  
    . 系統分析和設計直至Business Object
  
  
  
    . 按照Business Object模型形成數據庫腳本文件databasesql
  
  
  
    . 編寫$Torque_home/buildproperties
  

From:http://tw.wingwit.com/Article/program/Java/hx/201311/25535.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.