guzz是一套用來解決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一樣的對象化持久、映射和方便的增刪改查
- 支持像ibatis一樣,讓dba參與sql設(shè)計(jì)的復(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)一管理
文檔:http://code.google.com/p/guzz/wiki/WikiHomePage?tm=6
下載:http://code.google.com/p/guzz/downloads/list
1.2.8 更新介紹:
支持(JPA)annotation
支持按照J(rèn)PA規(guī)范的annotation進(jìn)行對象映射聲明,同時(shí)為了實(shí)現(xiàn)guzz特有的功能,對annotation進(jìn)行了擴(kuò)展。擴(kuò)展方式與hibernate類似,如果看到與hibernate annotation名字相同的注解,含義和用法也基本相同。
更多介紹請參看使用手冊:
Guzz Annotation使用幫助:http://code.google.com/p/guzz/wiki/TutorialHbmAnnotation
Guzz Annotation參考手冊:http://code.google.com/p/guzz/wiki/AppendJPAAnnotation
支持動態(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個(gè)或者修改優(yōu)化1個(gè)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
使用動態(tài)SQL的應(yīng)用設(shè)計(jì)架構(gòu)參考:http://guzz.javaeye.com/blog/675955
改進(jìn)遠(yuǎn)程服務(wù)設(shè)計(jì):
增加對hessian, burlap協(xié)議的支持。目前guzz內(nèi)置支持phprpc, hessian, burlap三種協(xié)議進(jìn)行RPC遠(yuǎn)程調(diào)用。使用時(shí),三種協(xié)議可以透明替換,類似spring對RMI類協(xié)議的封裝。具體介紹請參看:http://code.google.com/p/guzz/wiki/TutorialFutureService
增加枚舉類型與類型參數(shù)化支持:
按照TopLink的模式,支持JDK5 enum。Enum在使用時(shí)和普通類型一樣,不需要實(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ù)時(shí),將String類型自動轉(zhuǎn)換成需要的數(shù)據(jù)類型。參數(shù)化類型主要為日期和枚舉。詳細(xì)介紹:http://code.google.com/p/guzz/wiki/TutorialHbmXml
增加對數(shù)據(jù)庫保留字的支持:
在定義數(shù)據(jù)庫列名時(shí),可以用`(ESC下面的鍵)將列名引起來,避免字段名稱與數(shù)據(jù)庫保留字沖突。此功能與hibernate提供的處理保留字方法相同,但guzz只支持字段,不支持`表名`。
增加對Microsoft SQL Server的支持(未測試):
參考hibernate實(shí)現(xiàn)了一個(gè)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
其他:
1. 文檔進(jìn)行了大范圍的補(bǔ)充和更新;
2. 修復(fù)了所有已經(jīng)發(fā)現(xiàn)的bug。
下一版本計(jì)劃:
- 增加對spring事務(wù)的兼容。
- 設(shè)計(jì)一些常見的服務(wù),推廣guzz基礎(chǔ)服務(wù)理念。