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