guzz是一套用來解決ORM、多數據源管理、以及通用數據計算的數據層框架,為系統在數據層的設計提供一站式解決方案。guzz可以看作是 ibatis/hibernate的一大的延伸,并可以取代這2個東西。
guzz主要功能與特點:
- 現代大規模系統設計,技術上吸收了ibatis/hibernate的優點
- 支持像hibernate一樣的對象化持久、映射和方便的增刪改查
- 支持像ibatis一樣,讓dba參與sql設計的復雜數據庫操作和優化
- 支持在線加載與調試SQL。按照應用策略,從文件/數據庫/Web Service等途徑,動態提取與使用SQL語句(Dynamic SQL)
- 支持應用程序使用大量的數據庫和主從讀寫分離
- 支持超越范式的特殊關聯、非結構化數據等異構資源的統一管理
- 支持數據表在多組機器間水平分布(Shard),并自動維護多組機器之間的分布式事務
- 支持1張表按照業務規則分切成多張小表(Shadow),并支持每張小表擁有自己特殊的屬性字段(Custom)
- 支持組件化服務(SOA),構建企業/項目實施基礎平臺
- 提供面向對象的數據庫讀取標簽(JSP Taglib),加快頁面展示層的快速變更、開發與部署
- 支持配置管理服務器,可以使用一套軟件系統對所有應用程序的配置進行統一管理
項目地址:http://code.google.com/p/guzz/
文檔:http://code.google.com/p/guzz/wiki/WikiHomePage?tm=6
下載:http://code.google.com/p/guzz/downloads/list
1.2.8 更新介紹:
支持(JPA)annotation
支持按照JPA規范的annotation進行對象映射聲明,同時為了實現guzz特有的功能,對annotation進行了擴展。擴展方式與hibernate類似,如果看到與hibernate annotation名字相同的注解,含義和用法也基本相同。
更多介紹請參看使用手冊:
Guzz Annotation使用幫助:http://code.google.com/p/guzz/wiki/TutorialHbmAnnotation
Guzz Annotation參考手冊:http://code.google.com/p/guzz/wiki/AppendJPAAnnotation
支持動態管理SQL:
動態SQL(Dynamic SQL)不是指應用程序動態的拼接SQL語句,動態SQL是指應用程序可以動態的獲取配置好的SQL語句。在獲取的過程中,SQL語句如何管理,由應用系統自身決定。
換句話說,在ibatis中,SQL語句配置到ibatis.xml文件中,在guzz中,配置到guzz.xml中。但當配置完成后,在系統運行期間這些SQL都是不能變動的,如果需要添加1個或者修改優化1個SQL語句,必須重啟應用才能生效。而動態SQL允許應用系統動態的管理(添加/修改/優化/刪除)sql語句以及查詢結果到對象的映射關系(ORM),對于SQL的變更不再需要重啟應用系統,以簡化維護與應對需求變化。
動態SQL主要有兩種應用場景:SQL優化和動態數據源。具體介紹請參看:http://code.google.com/p/guzz/wiki/TutorialDynamicSQLService
使用動態SQL的應用設計架構參考:http://guzz.javaeye.com/blog/675955
改進遠程服務設計:
增加對hessian, burlap協議的支持。目前guzz內置支持phprpc, hessian, burlap三種協議進行RPC遠程調用。使用時,三種協議可以透明替換,類似spring對RMI類協議的封裝。具體介紹請參看:http://code.google.com/p/guzz/wiki/TutorialFutureService
增加枚舉類型與類型參數化支持:
按照TopLink的模式,支持JDK5 enum。Enum在使用時和普通類型一樣,不需要實現特殊的接口(hibernate要求實現接口)。Enum支持通過JPA的Enumeration注釋聲明,也支持在hbm.xml中通過xml定義。通過xml的定義方式參看:http://code.google.com/p/guzz/wiki/TutorialHbmXml
類型參數化為guzz的特殊功能,用于處理動態SQL參數和Jsp Taglib條件參數時,將String類型自動轉換成需要的數據類型。參數化類型主要為日期和枚舉。詳細介紹:http://code.google.com/p/guzz/wiki/TutorialHbmXml
增加對數據庫保留字的支持:
在定義數據庫列名時,可以用`(ESC下面的鍵)將列名引起來,避免字段名稱與數據庫保留字沖突。此功能與hibernate提供的處理保留字方法相同,但guzz只支持字段,不支持`表名`。
增加對Microsoft SQL Server的支持(未測試):
參考hibernate實現了一個SQL Server 2000 & 2005的dialect,不支持分頁。沒有測試過。Dialect實現類:org.guzz.dialect.MSSQLDialect
Guzz已經能夠支持的數據庫和數據類型請參看:
http://code.google.com/p/guzz/wiki/TutorialGuzzXml
其他:
1. 文檔進行了大范圍的補充和更新;
2. 修復了所有已經發現的bug。
下一版本計劃:
- 增加對spring事務的兼容。
- 設計一些常見的服務,推廣guzz基礎服務理念。
|