阅读更多

19顶
2踩

企业架构

原创新闻 guzz1.2.8 beta1发布--支持annotation

2010-05-04 13:33 by 正式记者 myreligion 评论(20) 有6679人浏览
guzz是一套用来解决ORM、多数据源管理、以及通用数据计算的数据层框架,为系统在数据层的设计提供一站式解决方案。guzz可以看作是 ibatis/hibernate的一大的延伸,并可以取代这2个东西。

guzz主要功能与特点:
  • 现代大规模系统设计,技术上吸收了ibatis/hibernate的优点
  • 支持像hibernate一样的对象化持久、映射和方便的增删改查
  • 支持像ibatis一样,让dba参与sql设计的复杂数据库操作和优化
  • 支持应用程序使用大量的数据库和主从读写分离
  • 支持超越范式的特殊关联、非结构化数据等异构资源的统一管理
  • 支持数据表在多组机器间水平分布(Shard),并自动维护多组机器之间的分布式事务
  • 支持1张表按照业务规则分切成多张小表(Shadow),并支持每张小表拥有自己特殊的属性字段(Custom)
  • 支持组件化服务(SOA),构建企业/项目实施基础平台
  • 提供面向对象的数据库读取标签(JSP Taglib),加快页面展示层的快速变更、开发与部署
  • 支持配置管理服务器,可以使用一套软件系统对所有应用程序的配置进行统一管理
项目地址:http://code.google.com/p/guzz/
文档:http://code.google.com/p/guzz/wiki/WikiHomePage?tm=6
FAQ:http://code.google.com/p/guzz/wiki/AboutFAQ

1.2.8 beta1更新介绍:

  • 支持(JPA)annotation 。支持按照JPA规范的annotation进行对象映射声明,同时为了实现guzz特有的功能,对annotation进行了扩展。扩展方式与hibernate类似,如果看到与hibernate annotation名字相同的注解,含义和用法也基本相同。

  • 修正了一个taglib bug 。修正了Guzz面向对象数据库操作标签无法处理包含运算符的特殊条件的错误。

应用示例说明:

通过annotation定义一个域对象:
@javax.persistence.Entity
@org.guzz.annotations.Entity(businessName = "comment")
@Table(name="TB_COMMENT", shadow = CommentShadowView.class)
@TableGenerator(
		name = "commentGen",
		table="tb_id",
		catalog="somelog",
		schema="some_schema",
		pkColumnName="pk",
		pkColumnValue="2",
		valueColumnName="id_count",
		initialValue=100,
		allocationSize=20
		/*
		 * create table tb_id(pk int(11) primary key, id_count int(11) default 0)
		 * insert into tb_id(pk, id_count) values(2, 100)
		 */
)
public class Comment {

	@javax.persistence.Id
	@GeneratedValue(generator="commentGen", strategy=GenerationType.TABLE)
	private int id ;
	
	private int userId ;
	
	private String userName ;
	
	@Column(name="DESCRIPTION")
	private String content ;
	
	private Date createdTime ;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public Date getCreatedTime() {
		return createdTime;
	}

	public void setCreatedTime(Date createdTime) {
		this.createdTime = createdTime;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public int getUserId() {
		return userId;
	}

	public void setUserId(int userId) {
		this.userId = userId;
	}
	
}


完成id, userId, userName, content, createdTime的映射。

在guzz主配置文件中声明域对象定义:
<a-business class="org.guzz.test.Comment"/>


更多介绍请参看使用手册:

Guzz Annotation使用帮助:http://code.google.com/p/guzz/wiki/TutorialHbmAnnotation

Guzz Annotation参考手册:http://code.google.com/p/guzz/wiki/AppendJPAAnnotation

下一版本计划:

  • 改进remote service,提供更多内置的rpc协议支持。
  • 其他
19
2
评论 共 20 条 请登录后发表评论
20 楼 shiyangxt 2010-05-06 10:22
写的很吸引人。
19 楼 caoyangx 2010-05-05 22:22
真快啊,上次发布时,我提出要支持annotation的要求,没想到这么快就完成了,很快,很惊人。不过@是一条很长的路,需要不断的完善,希望再次看到你们的进步。
18 楼 qinshihuanglove 2010-05-05 17:41
17 楼 phoenix9412 2010-05-05 15:23
Guzz仅支持单对象ORM映射,不支持对象之间的关联映射(one-one, one-many, many-to, many-many),也不支持JPA的持久化方法。guzz annotation仅用来替代hbm.xml配置文件。
16 楼 beeke 2010-05-05 10:20
guzz支持对象关联吗?
15 楼 fuaiping2002 2010-05-05 10:01
技术真是越来越多了
14 楼 myreligion 2010-05-05 09:34
goalLD 写道
这个框架跟hibernate具体区别大吗?我觉得怎么差不多啊

除了ORM部分相似,其他都是hibernate没有的。例如:分表,切表,自定义表,多数据源,读写分离,组件服务化,面向对象数据库taglib,ibatis模式的sql语句配置与映射,配置服务器概念等等。
13 楼 myreligion 2010-05-05 09:32
longer042 写道
月来愈复杂。。。


注解只是最基本的ORM映射,用来替代hbm.xml配置文件,JPA定义的其他复杂东西一概没有。

12 楼 myreligion 2010-05-05 09:31
ziyu_1 写道
注解的方式看得蛋疼. 还不如 hbm配置呢


开始就支持hbm,现在才增加了一点注解。
11 楼 longer042 2010-05-05 09:06
月来愈复杂。。。
10 楼 goalLD 2010-05-05 08:57
这个框架跟hibernate具体区别大吗?我觉得怎么差不多啊
9 楼 zw61911169 2010-05-05 08:51
既然能代替ibatis和hibernate,,,要关注下的。。
8 楼 unika_ly12 2010-05-05 08:47
ziyu_1 写道
注解的方式看得蛋疼. 还不如 hbm配置呢

同感,采用少量的注解看起来还是比较优雅的,太多的话就不爽了。
7 楼 ziyu_1 2010-05-04 23:09
注解的方式看得蛋疼. 还不如 hbm配置呢
6 楼 troyconder 2010-05-04 17:11
看起来想当不错啊
5 楼 yuyue618 2010-05-04 16:48
框架真多啊
4 楼 insistence 2010-05-04 15:38
真的吗?那就要尝试一下了。。。哈哈
3 楼 unika_ly12 2010-05-04 15:14
终,终于出beta了
2 楼 NumbCoder 2010-05-04 14:45
引用
uzz可以看作是 ibatis/hibernate的一大的延伸,并可以取代这2个东西

真的吗?
1 楼 flyfan 2010-05-04 14:45
这个是国人的吗?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 进程间通信 IPC :共享内存机制

    进程间通信 IPC :共享内存机制

  • GMock

    Mock是什么? 在单元测试、模块的接口测试时,当这个模块需要依赖另外一个或几个类,而这时这些个类还没有开发好,这时我们就可以定义了Mock对象来模拟那些类的行为。 也就是自己实现一个假的依赖类,对这个类的方法你想要什么行为就可以有什么行为,你想让这个方法返回什么结果就可以返回怎么样的结果。Gmock的特性: 轻松地创建mock类 支持丰富的匹配器(Matcher)和行为(Action)

  • Node.js 中的多线程:使用原子进行安全的共享内存操作

    换句话说,它确保没有其他工作者可以介入当前可执行的操作并执行他们的工作,就像我们之前看到的那样。为了便于理解,我们假设执行上下文等于工作线程,因为每个线程确实是单独的执行上下文。,在下一篇文章中,我们将介绍如何使用更多函数来构建我们自己的信号量和互斥锁,以使共享资源的工作更加方便。即使我们在单个线程中异步运行此代码,唯一可能不同的是打印结果的顺序,但最终值的差异不会如此之大。当我们在多个线程之间共享资源时,我们将自己暴露在一个全新的充满恶劣竞争条件的世界中。我们认为这个缓冲区是一个不可转移的对象。

  • Node.js集群共享内存

    Node.js集群共享内存 官方的方法 ”单个 Node.js 实例运行在单个线程中。 为了充分利用多核系统,有时需要启用一组 Node.js 进程去处理负载任务。cluster 模块可以创建共享服务器端口的子进程。",这段文字来自官方文档的译文。 通俗的理解,单个Node.js实例,就是一个进程,这个进程只有一个线程。当然,一个进程至少有一个线程。Node.js的这个线程执行用户代码,IO访问都是异步的。 cluster模块,可以开启多进程,以下是最简单的示例,进程间通过send和on传递消息,这个消息是

  • c++ 单元测试框架 gmock 深度剖析

    文章转载自,为了便于阅读,对代码和部分内容字体进行了调整:c++ 单元测试框架 gmock 深度剖析 - 走看看 概要 随着微服务和CI的流行,在目前的软件工程领域中单元测试可以说是必不可少的一个环节,在TDD中,单元测试更是被提高到了一个新的高度。但是很多公司由于很多不同的原因,没有能持续维护,或者干脆就从来没有写过单元测试,确实,单元测试在初期和代码维护期会需要花一些投入,但是,如果一个项目是需要长期维护和更新的,那么单元测试的作用,相对于投入来说就根本不算什么。见过很多人写的单元测试,...

  • nodejs cluster多线程同步,nodejs多线程共享内存

    因为nodejs的I/O操作,底层是开启了多线程的当同时有多个IO请求时,主线程会创建多个eio线程,以提高IO请求的处理速度额外知识点:d.虽然nodejs的I/O操作开启了多线程,但是所有线程都是基于主线程开启的只能跑在一个进程当中还是不能充分利用cpu资源pm2进程管理器可以解决这个问题pm2是一个带有负载均衡功能的Node应用的进程管理器.e.cpu核数与线程之间的关系在过去单CPU时代,单任务在一个时间点只能执行单一程序。事实上,使用它进行繁重的计算等于摒弃Node几乎所有的优点。

  • C++57个入门知识点_34_虚函数的模拟实现-理解(利用函数指针替代virtual的虚函数功能;虚函数的本质即为函数的覆盖,子类一旦对父类同名成员函数重载,对象在调用时使用的是子类的函数)

    前面介绍了虚函数是以间接引用的方式实现“不同国家的人说不同语言”的功能,本篇对其过程进行了模拟实现。 1.步骤总结: //(1)找到对象头部四个字节--虚表 //(2)根据虚函数的位置(在cpp中定义的顺序),确定该虚函数在虚表的下标 //(3)找到对应的虚函数地址,直接调用该地址 用下图也可以看出 2.学习视频地址:虚函数的模拟实现 3.学习笔记 (1)整体结构如下图: (2)Chinese.h/cpp Chinese #pragma once #include &lt;iostream&gt; #

  • node 利用进程通信实现Cluster共享内存

    本篇文章主要介绍了node 利用进程通信实现Cluster共享内存,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  • 这是一个简单的共享内存,大致的一个实现流程,仅供参考

    QSharedMemory memory = new QSharedMemory(); 1.设置key值 memory-&gt;serKey(“shareMemory”); 2.创建内存大小 memory-&gt;create(1010241024); 3.判断是否存入内存memory-&gt;isAttached(); 4.给共享内存上锁 memory-&gt;lock(); 5.给字符存入共享...

  • gmock

    C++单元测试工具,现在市面上有很多并且不少都是免费开源的,这次要介绍的是gmock,来自大名鼎鼎的Google,gmock是包含了gtest的一个单元测试框架,在gtest基础上增加了许多便于开发人员进行mock打桩的接口等,可以理解为gtest负责进行测试,gmock负责测试前的打桩,gmock比起其他的cppunit等测试工具来说,最大的优点就是可以有简单的内置宏来定义一个类的mock类进行打桩,这为C++类单元测试带来了极大的便利。 【编译gmock】 解压缩gmock-1.7.0.zip,

  • mmap函数用法及示例程序

    UNIX网络编程第二卷进程间通信对mmap函数进行了说明。该函数主要用途有三个:1、将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能;2、将特殊文件进行匿名内存映射,可以为关联进程提供共享内存空间;3、为无关联的进程提供共享内存空间,一般也是将一个普通文件映射到内存中。头文件:    #include 函数:void *mmap(v

  • Nodejs中解决cluster模块的多进程如何共享数据问题

    Nodejs中解决cluster模块的多进程如何共享数据问题  更新时间:2016年11月10日 08:44:20   作者:黄明恩     本篇文章主要介绍了Nodejs中解决cluster模块的多进程如何共享数据问题,有需要的可以了解一下。   前述 nodejs在v0.6.x之后增加了一个模块cluster用于实现多进程,利用child_process模块来创建和管理进程,增加程...

  • something about Google Mock / gmock使用小结

    下载gmock:http://code.google.com/p/googlemock/downloads/list 安装:将下载的压缩包解压出来,到解压目录下执行: ./configure 然后执行: make 注意,这个make不会编译Google Mock自己的测试用例。要编译它们,需要到解压目录下的“make”子目录下,执行: make gmock_test 文章来源:htt...

  • 两个进程共享内存,一个写,一个读

    要求是:生产者进程生成Catalan序列,并将其写入到内存共享对象。消费者进程从共享内存中读取并输出序列。生产者进程要在命令行指定生成Catalan数的数目。例如,命令行指定5,说明生产者进程会生成5个Catalan数:1 2 5 14 42 这里的实现没有显式创建进程,因为打开不同的命令行窗口就于创建新进程。 //生产者(write) #include &lt;stdio....

  • 共享内存(进程通信)

    前面介绍了进程通信的几种方式,信号量,管道,消息队列,今天主要总结下共享内存的知识点。什么是共享内存我们一张图来解释什么叫共享内存。我们知道,每个进程都有一个叫PCB(Linux下一般为task _ struct)的数据结构,用于保存进程的相关信息。我们可以通过PCB找到进程地址空间,进程地址空间一般包括栈,堆,数据段,代码段等等,需要明确的一点就是用户访问的都是虚拟内存,操作系统是通过页表+MMU

  • 用c语言模拟虚函数

    <br />#include <stdlib.h><br /> #include <string.h><br /> #include <stdio.h><br /><br /> struct vtable {<br />     void (*fun)();<br /> };<br /><br /><br /> struct father {<br />     struct vtable *vptr;<br />     char str[128];        <br /> };<b

  • 白盒测试之gmock入门篇

    一、gmock是什么 gmock是google公司推出的一款开源的白盒测试工具。gmock是个很强大的东西,测试一个模块的时候,可能涉及到和其他模块交互,可以将模块之间的接口mock起来,模拟交互过程。其作用就类似白盒测试中的打桩的概念。 下面简单的说说打桩在白盒测试中的重要性: 1、比如银行业务,需要测试业务模块。此时,不可能去操作真实的数据库,并且搭建新的数据库可能比较复杂或者耗时。那么...

  • 理解使用GMock

    Mock的定义: 在单元测试、模块的接口测试时,当一个模块需要依赖另外一个或几个类,而这时所依赖的类还没有开发好,这时就可以定义Mock对象来模拟那些类的行为。也就是自己实现一个假的依赖类,对这个类的方法想要什么行为就可以有什么行为,想让这个方法返回什么结果就可以返回什么样的结果。(便捷的模拟对象的方法。) GMock的特性: google mock是用来配合google test对C...

  • gmock为什么只能支持虚函数(其实也不准确)

    gmock为什么只能支持虚函数 举报|2015-03-24 14:54andrewnwpu | 浏览 0 次  悬赏:50  函数 我有更好的答案 分享到: google mock按道理讲只能mock虚函数,这是因为在单元测试中,首先定义一个mock类(mockTest),public继承要mock的

Global site tag (gtag.js) - Google Analytics