guzz是一套用来解决orm、多数据源管理、以及通用数据计算的数据层框架,为系统在数据层的设计提供一站式解决方案。guzz可以看作是 ibatis/hibernate的一大的延伸,并可以取代这2个东西。 guzz主要功能与特点: 现代大规模系统设计,技术上吸收了ibatis/hiber
guzz是一套用来解决orm、多数据源管理、以及通用数据计算的数据层框架,为系统在数据层的设计提供一站式解决方案。guzz可以看作是 ibatis/hibernate的一大的延伸,并可以取代这2个东西。
guzz主要功能与特点:
>现代大规模系统设计,技术上吸收了ibatis/hibernate的优点
>支持像hibernate一样的对象化持久、映射和方便的增删改查
>支持像ibatis一样,让dba参与sql设计的复杂数据库操作和优化
>支持在线加载与调试sql。按照应用策略,从文件/数据库/web service等途径,动态提取与使用sql语句(dynamic sql)
>支持应用程序使用大量的数据库和主从读写分离
>支持超越范式的特殊关联、非结构化数据等异构资源的统一管理
>支持数据表在多组机器间水平分布(shard),并自动维护多组机器之间的分布式事务
>支持1张表按照业务规则分切成多张小表(shadow),并支持每张小表拥有自己特殊的属性字段(custom)
>支持组件化服务(soa),构建企业/项目实施基础平台
>支持配置管理服务器,可以使用一套软件系统对所有应用程序的配置进行统一管理
项目地址:http://code.google.com/p/guzz/
文档:http://code.google.com/p/guzz/wiki/wikihomepage?tm=6
下载:http://code.google.com/p/guzz/downloads/list
1.2.8 更新介绍:
支持(jpa)annotation
支持按照jpa规范的annotation进行对象映射声明,同时为了实现guzz特有的功能,对annotation进行了扩展。扩展方式与hibernate类似,如果看到与hibernate annotation名字相同的注解,含义和用法也基本相同。
更多介绍请参看使用手册:
guzz annotation使用帮助:http://code.google.com/p/guzz/wiki/tutorialhbmannotation
guzz annotation参考手册:http://code.google.com/p/guzz/wiki/appendjpaannotation
支持动态管理sql:
动态sql(dynamic sql)不是指应用程序动态的拼接sql语句,动态sql是指应用程序可以动态的获取配置好的sql语句。在获取的过程中,sql语句如何管理,由应用系统自身决定。
换句话说,在ibatis中,sql语句配置到ibatis.xml文件中,在guzz中,配置到guzz.xml中。但当配置完成后,在系统运行期间这些sql都是不能变动的,如果需要添加1个或者修改优化1个sql语句,必须重启应用才能生效。而动态sql允许应用系统动态的管理(添加/修改/优化/删除)sql语句以及查询结果到对象的映射关系(orm),对于sql的变更不再需要重启应用系统,以简化维护与应对需求变化。
动态sql主要有两种应用场景:sql优化和动态数据源。具体介绍请参看:http://code.google.com/p/guzz/wiki/tutorialdynamicsqlservice
使用动态sql的应用设计架构参考:http://guzz.javaeye.com/blog/675955
改进远程服务设计:
增加对hessian, burlap协议的支持。目前guzz内置支持phprpc, hessian, burlap三种协议进行rpc远程调用。使用时,三种协议可以透明替换,类似spring对rmi类协议的封装。具体介绍请参看:http://code.google.com/p/guzz/wiki/tutorialfutureservice
增加枚举类型与类型参数化支持:
按照toplink的模式,支持jdk5 enum。enum在使用时和普通类型一样,不需要实现特殊的接口(hibernate要求实现接口)。enum支持通过jpa的enumeration注释声明,也支持在hbm.xml中通过xml定义。通过xml的定义方式参看:http://code.google.com/p/guzz/wiki/tutorialhbmxml
类型参数化为guzz的特殊功能,用于处理动态sql参数和jsp taglib条件参数时,将string类型自动转换成需要的数据类型。参数化类型主要为日期和枚举。详细介绍:http://code.google.com/p/guzz/wiki/tutorialhbmxml
增加对数据库保留字的支持:
在定义数据库列名时,可以用`(esc下面的键)将列名引起来,避免字段名称与数据库保留字冲突。此功能与hibernate提供的处理保留字方法相同,但guzz只支持字段,不支持`表名`。
增加对microsoft sql server的支持(未测试):
参考hibernate实现了一个sql server 2000 & 2005的dialect,不支持分页。没有测试过。dialect实现类:org.guzz.dialect.mssqldialect
guzz已经能够支持的数据库和数据类型请参看:
http://code.google.com/p/guzz/wiki/tutorialguzzxml
其他:
1. 文档进行了大范围的补充和更新;
2. 修复了所有已经发现的bug。
下一版本计划:
>增加对spring事务的兼容。
>设计一些常见的服务,推广guzz基础服务理念。
