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