欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  资讯频道

guzz1.2.5 发布(内容已更新)

程序员文章站 2022-05-07 14:09:57
...
guzz技术概述:

guzz(谷子)是一套用来解决ORM、多数据源数据管理、以及通用数据处理的数据层框架。guzz可以看作是ibatis/hibernate的一个延伸。

ORM:guzz的ORM功能参考ibatis和hibernate的设计而来,同时具备ibatis的复杂查询在 xml中配置以及简单的CRUD类似hibernate全部对象化管理的特点,适用于大部分数据库操作比较简单(关心进度和技术门槛),而某些性能攸关 sql需要单独维护和调优的项目(关心性能)。

多数据源管理:多数据源管理是指guzz可以同时管理多组数据库,在执行查询时根据要查询的对象,自动分配到正确的数据库机器组执行查询操作。每一组可能包含主从,guzz自动分配主从库的操作。这样做到的效果是:在数据库设计时表的存储位置和主从设计完全对开发人员透明;并在以后需要扩展时,可以按照表将数据库分散到多组机器上,并行扩展。

多数据源管理还包括对异构数据的统一管理,如一些对象的某些属性并不保存在数据库里,如基于某种考虑需要先验证在读取或先查缓存再读数据库等。对于这种另类的方式,往往开发人员都是遇到一个特殊代码处理一个,非常混乱;而guzz可以通过自定义属性加载进行统一管理,在普通开发人员看来,并不需要了解数据的具体存储和读取过程。使用这些异构来源数据,就像使用普通的pojo一样简单。尤其对于后台开发与前端页面分开的开发团队,对前端提供的接口越越简单越统一,成本就越低(如产品部门与实施团队)。

通用数据处理:guzz将某些通用的数据和处理模型定义为服务(Service),如用户登录与认证、Session 管理、IP地址到地理位置的映射、通过字符获取验证码图片等。这些服务包括数据和数据的运算处理,这些数据和数据运算guzz当作一类特殊的数据进行管理,用于多个项目之间实现共享。这些服务合在一起可以构成企业或项目的基础平台,越积累越多,guzz通过对这些服务的重复利用大幅度降低重复开发成本。

总结:guzz的目的并不仅仅是提供一种ORM映射,而是提供一套完整的数据层架构,用于解决项目中可能遇到的各种数据类型和数据处理策略,统一数据接口,简化项目架构设计。guzz提供的可配置的多数据源管理方式,相信每个大型系统都有自己的实现策略;guzz抽象出这些,对于新项目就不用再摸索了,尤其是多数据库组和主从分离更是面相未来。

项目地址:http://www.guzz.org/
工程地址:http://code.google.com/p/guzz/
基本理念:guzz不仅仅是一套Java API,他将在项目管理、人员管理、产品在中国落地、以及项目质量控制与扩展性设计等方面提供完整的解决办法。guzz提供的功能包括:ORM,异构数据整合,服务化支持以及前端页面分离并快速开发模型。

项目管理
由于项目紧迫,人手不足,新手太多或者老员工已经疲劳,您的项目往往是这样:
guzz1.2.5 发布(内容已更新)

同样的资源,同样的工程量,guzz将为你自动产出如下架构:
guzz1.2.5 发布(内容已更新)

在此图中,所有模块都是可选的。刚开始可以按照传统架构运行业务,当需要时,随时调整配置自动完成扩展,代码不用修改,以解决项目维护难题。

人员管理
对于中小型公司或项目实施部门,工作分配往往这样:
guzz1.2.5 发布(内容已更新)

基于guzz框架后,guzz模型将要求:
guzz1.2.5 发布(内容已更新)

其中的橙色部分在传统架构下很难实现,下面一节将重点介绍。总的来说,人员应当按照技术能力,而不是体力分配工作。

中国国情的产品落地

根据经验,在中国肯花钱购买的项目一般都会要求定制。在定制过程中,一般后台功能和内部流程是不变的,往往需要变化的就是页面;例如论坛列表页面要求增加一个公告,要求显示出好友列表,要求把用户A(总裁)的帖子自动放在第1条,等等。对于这些变化,基于传统的MVC架构,需要先修改manager提供接口获取数据,在修改Action提取数据,在修改jsp显示数据,从上往下代码修改无一幸免。如果是一套产品,有几个项目实施下来,产品核心会越来越小,项目间代码相互冲突,管理越来越困难,而产品团队基本上也都全部下放到了项目实施团队(java底层代码实施团队往往不愿意碰)。一套产品计划也就接近宣告结束了。

guzz框架解决了这个问题。guzz设计了一套数据读取标签,用于前端页面的定制。基于guzz的产品,可以完成上图的人员组织架构。在这个架构中产品开发团队和页面团队合作打造出产品,而实施团队负责在已有的前端页面(jsp/css/js等)上进行修改,完成产品落地。在这个过程中,产品团队只需要提*品的数据库和领域对象模型即可,而实施团队也不需要关心底层代码实现(或许是个jar包)。guzz提供有专门的前端页面文档来培训实施团队的基础技术。

Guzz技术功能

Guzz提取了hibernate和ibatis设计的优点,融合使用,并增加很多全新的功能。总的来说,可以理解为:guzz=hibernate + ibatis + fundemental service platform + more...。主要包括:
   
  • 现代大规模系统设计
  •    
  • 支持像hibernate一样的对象持久,映射和方便的增删改查
  •    
  • 支持像ibatis一样,让dba参与sql设计的复杂数据库操作和优化
  •    
  • 支持大量的数据库和主从分离
  •    
  • 支持数据表在多组机器中水平分布(Shard)
  •    
  • 组件化服务(SOA),构建企业/项目实施基础服务平台
  •    
  • 提高xx%倍效率的快速开发
  •    
  • 支持配置管理服务器,对所有应用程序的配置进行统一管理

完整的介绍请参看:http://www.guzz.org/wiki/GoodForMe

了解更多:http://www.guzz.org/

入门教程:http://www.guzz.org/wiki/GuzzGuide

前端实施人员或页面工程师教程:http://www.guzz.org/wiki/TaglibGuide

Guzz版本:

Guzz版本从1.2开始。在guzz之前曾经设计过另外一个框架来完成类似理念,前两次由于引入了大量的annotation,涉及很多父子、关联等自动识别的东西,比较复杂。在实际项目实践中发现,很容易用错,也不好理解,现在已经全部废弃。Guzz1.2为第3版设计,到目前我们的几个项目用得都还算顺利,开发人员上手很快,一天就能干活。这也是guzz以后将坚持的:简单,实用。

1.2.6开发计划:

  • 提供byte, smallclob, smallblob, clob, blob/raw数据类型支持
  •    
  • 提供几个常见的异构数据自定义Loader
  •    
  • 提供更多数据库支持和数据库支持测试
  •    
  • 补全guzz mapping的配置说明以及自定义数据loader和service的开发文档

相关标签: iBATIS Hibernate