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,异构数据整合,服务化支持以及前端页面分离并快速开发模型。
项目管理
由于项目紧迫,人手不足,新手太多或者老员工已经疲劳,您的项目往往是这样:
同样的资源,同样的工程量,guzz将为你自动产出如下架构:
在此图中,所有模块都是可选的。刚开始可以按照传统架构运行业务,当需要时,随时调整配置自动完成扩展,代码不用修改,以解决项目维护难题。
人员管理
对于中小型公司或项目实施部门,工作分配往往这样:
基于guzz框架后,guzz模型将要求:
其中的橙色部分在传统架构下很难实现,下面一节将重点介绍。总的来说,人员应当按照技术能力,而不是体力分配工作。
中国国情的产品落地
根据经验,在中国肯花钱购买的项目一般都会要求定制。在定制过程中,一般后台功能和内部流程是不变的,往往需要变化的就是页面;例如论坛列表页面要求增加一个公告,要求显示出好友列表,要求把用户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...。主要包括:
完整的介绍请参看: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开发计划:
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,异构数据整合,服务化支持以及前端页面分离并快速开发模型。
项目管理
由于项目紧迫,人手不足,新手太多或者老员工已经疲劳,您的项目往往是这样:
同样的资源,同样的工程量,guzz将为你自动产出如下架构:
在此图中,所有模块都是可选的。刚开始可以按照传统架构运行业务,当需要时,随时调整配置自动完成扩展,代码不用修改,以解决项目维护难题。
人员管理
对于中小型公司或项目实施部门,工作分配往往这样:
基于guzz框架后,guzz模型将要求:
其中的橙色部分在传统架构下很难实现,下面一节将重点介绍。总的来说,人员应当按照技术能力,而不是体力分配工作。
中国国情的产品落地
根据经验,在中国肯花钱购买的项目一般都会要求定制。在定制过程中,一般后台功能和内部流程是不变的,往往需要变化的就是页面;例如论坛列表页面要求增加一个公告,要求显示出好友列表,要求把用户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的开发文档
上一篇: Jobs==Hero
下一篇: flash怎么绘制一个可爱的发夹图形?
推荐阅读
-
Win10 PC版一周年更新发布预览14393.726更新修复内容汇总
-
HTML 5.1来了 9月份正式发布 更新内容预览
-
百度发布区块链白皮书 已落地内容版权、信息溯源等六大领域
-
Win10 PC版一周年更新发布预览14393.726更新修复内容汇总
-
Intel低功耗奔腾/赛扬致64位软件崩溃:已发布微代码更新
-
Opera首个重生版本发布 Opera重生版本更新哪些内容?
-
微信公众号怎么修改已发布的内容?微信公众号修改已发布文章教程
-
迅雷9.1.24正式发布 迅雷9.1.24更新了哪些内容?
-
HTML 5.1来了 9月份正式发布 更新内容预览
-
Watch OS 1.0.1发布 Apple Watch首个固件更新内容