`

guzz的批量增加的功能

    博客分类:
  • guzz
阅读更多
针对guzz的表分切与批量增加的应用

guzz的表切分功能,数据库表是需要提前建好的。

guzz对于单个记录的插入操作可以在插入之前设置 tableConditon.

例如:
WriteTranSession  session=trm.openRWTran(true);		
		int userNo=1;
		int courseNo=2;
		
		try{
		
			for(int i=0,j=100;i<j;i++)
			{
				userNo=i%4+1;
				courseNo=courseNo%8+1;
				
				Study study=new Study( userNo,  courseNo);
				
				Guzz.setTableCondition(study.getUserNo()) ;
				
				session.insert(study) ;

                                System.out.println(study.getNo());//可以得到记录号
			}
		
		}finally{
			session.close();
		}

对于批量插入操作时不可以在每次insert的前一步设置  tableConditon.,

例如:
WriteTranSession  session=trm.openRWTran(false);
		
		int userNo=1;
		int courseNo=2;
		
		try{			
			ObjectBatcher batcher =session.createObjectBatcher();			
			Study study=new Study( userNo,  courseNo);
			for(int i=0,j=100;i<j;i++)
			{
				userNo=i%4+1;
				courseNo=courseNo%8+1;				
				study=new Study( userNo,  courseNo);				
				batcher.setTableCondition(study.getUserNo());//这里会报错的
				batcher.insert(study) ;
				System.out.println(study.getNo());
			}
			
			batcher.executeBatch();
			session.commit();		
		}finally{
			session.close();
		}


我们可以改变成分批的批量处理的结果是:

		
		WriteTranSession  session=trm.openRWTran(false);		
		int userNo=1;
		int courseNo=2;		
		try{
			
			ObjectBatcher batcher1 =session.createObjectBatcher();
			ObjectBatcher batcher2 =session.createObjectBatcher();
			ObjectBatcher batcher3 =session.createObjectBatcher();
			ObjectBatcher batcher4 =session.createObjectBatcher();
							
			batcher1.setTableCondition(1);
			batcher2.setTableCondition(2);
			batcher3.setTableCondition(3);
			batcher4.setTableCondition(4);
			
			Study study=null;
			
			for(int i=0,j=100;i<j;i++)
			{
				userNo=i%4+1;
				courseNo=courseNo%8+1;				
				study=new Study( userNo,  courseNo);				
				//batcher.setTableCondition(study.getUserNo());
				switch(userNo)
				{
				case 1:
					batcher1.insert(study);
					break;
				case 2:
					batcher2.insert(study);
					break;
				case 3:
					batcher3.insert(study);
					break;
				case 4 :
					batcher4.insert(study);
					break;
				}
				 
			}
			
			int s1[]=batcher1.executeBatch();
			int s2[]=batcher2.executeBatch();
			int s3[]=batcher3.executeBatch();
			int s4[]=batcher4.executeBatch(); 
			//s1、s2、s3、s4的元素值都是1
			session.commit();		
		}finally{
			session.close();
		}




附录:
配置文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE guzz-mapping PUBLIC "-//GUZZ//GUZZ MAPPING DTD//EN" "http://www.guzz.org/dtd/guzz-mapping.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.uidd.messageBoard.pojo.Study" table="t_study_" shadow="com.sjdd.messageBoard.pojo.StudyShadouView">
        <id name="no" type="int">
            <generator class="identity" />
        </id>
        <property name="userNo" type="int" column="userNo" />
        <property name="courseNo" type="int" column="courseNo" />
    </class>
</hibernate-mapping>

分表的规则

package com.uidd.messageBoard.pojo;

import org.guzz.exception.GuzzException;
import org.guzz.orm.AbstractShadowTableView;

public class StudyShadouView extends AbstractShadowTableView {

	public String toTableName(Object tableCondition) {
		// TODO Auto-generated method stub
		 if(tableCondition == null){ //强制要求必须设置表分切条件,避免编程时疏忽。
	             throw new GuzzException("null table conditon is not allowed.") ;
	     }
	     
	     int userNo = (Integer) tableCondition ;
	     
	     //如果用户ID为偶数,记入TB_COMMENT1, 否则写入TB_COMMENT2
	     int i = userNo % 3 + 1 ;
	     
	     return super.getConfiguredTableName() + i;
	     
	}

}


创建表的SQL

create table t_study_1
(
  no INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
  userNo INT NOT NULL,
  courseNo int NOT NULL
);
create table t_study_2
(
  no INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
  userNo INT NOT NULL,
  courseNo int NOT NULL
);
create table t_study_3
(
  no INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
  userNo INT NOT NULL,
  courseNo int NOT NULL
);




package com.uidd.messageBoard.pojo;

public class Study implements java.io.Serializable {
	
	private int no;
	private int userNo;
	private int courseNo;
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	public int getUserNo() {
		return userNo;
	}
	public void setUserNo(int userNo) {
		this.userNo = userNo;
	}
	public int getCourseNo() {
		return courseNo;
	}
	public void setCourseNo(int courseNo) {
		this.courseNo = courseNo;
	}
	public Study() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Study(int no, int userNo, int courseNo) {
		super();
		this.no = no;
		this.userNo = userNo;
		this.courseNo = courseNo;
	}
	
	public Study(int userNo, int courseNo) {
		super();
		this.userNo = userNo;
		this.courseNo = courseNo;
	}
	
}

分享到:
评论

相关推荐

    guzz的jar包

    guzz的jar包,工程下直接考过来的,可以直接使用

    guzz: a empty sample project build20110323.zip

    【Guzz:一个空的示例项目build20110323.zip】 Guzz是一个基于Java的高性能、轻量级的分布式数据处理框架,主要用于处理大规模数据流。这个"empty sample project build20110323.zip"是针对Guzz的学习资源,包含了...

    guzz开发jar

    guzz是一套用来进行快速开发和高性能网站设计的java框架,通过ORM、多数据源数据管理、以及通用数据处理,为系统在数据层的设计提供一站式解决方案。用于替代或者补充hibernate或ibatis,并提供更多的大型系统架构...

    Guzz-crx插件

    【Guzz-crx插件】是一款专为Guzz平台设计的屏幕共享扩展程序,它使得用户能够在使用Guzz.io服务时轻松实现桌面屏幕共享功能。这一功能对于远程协作、在线会议、教育辅导以及团队沟通等场景具有极大的价值,极大地...

    guzz的「Guzz」-crx插件

    为Guzz启用屏幕共享。 此扩展程序允许www.guzz.io用户共享桌面屏幕 支持语言:English

    InstallAnywhere 2008破解与自定义PlugIn陷阱经验分享

    NULL 博文链接:https://guzz.iteye.com/blog/256235

    轻松将一张大表分切到不同的机器中

    NULL 博文链接:https://guzz.iteye.com/blog/883225

    java框架方面面试题

    目前市面上有多个持久层框架,如Hibernate、MyBatis、TopLink、Guzz、jOOQ、Spring Data和ActiveJDBC等,它们各有特点,为开发者提供不同场景下的解决方案。 在Hibernate框架中,SessionFactory是一个重要的概念,...

    bicq代码

    为了深入了解,你可以访问提供的博文链接(https://guzz.iteye.com/blog/507276),在那里可能会找到关于BICQ的详细解释、使用示例和开发背景等信息。同时,查看压缩包中的文件(BICQ)可以获取实际的源代码,进一步...

    JAVA面试问题及标准答案.docx

    常见的Java持久层框架有Hibernate、MyBatis、TopLink、Guzz、jOOQ、Spring Data和ActiveJDBC等,它们都提供了方便的数据操作和数据库访问功能。 在Hibernate中,SessionFactory是一个关键组件,它是线程安全的,...

    JAVA面试问题及答案.docx

    常见的持久层框架有Hibernate、MyBatis、TopLink、Guzz、jOOQ、Spring Data和ActiveJDBC等,它们都为开发者提供了便捷的数据持久化解决方案。 在Hibernate中,Session提供了多种操作数据库的方法,如load()和get()...

    Java面试题全集(下)

    持久层框架则是实现数据持久化操作的一系列框架,常见的有Hibernate、MyBatis、TopLink、Guzz-jOOQ、SpringData和ActiveJDBC等。 3. Hibernate持久层框架:Hibernate是一个开源的ORM框架,它提供了一个完整的解决...

    java框架面试题

    - **Guzz** - **jOOQ** - **Spring Data** - **ActiveJDBC** 这些框架提供了不同的特性和灵活性,适用于不同的应用场景。 #### 三、Hibernate中的SessionFactory和Session **1. SessionFactory的线程安全性** ...

    Java面试题全集.docx

    - **Guzz**:轻量级的持久层框架。 - **ActiveJDBC**:面向对象的持久层框架,提供了类似于ActiveRecord的风格。 #### 三、SessionFactory与Session的安全性与使用场景 **知识点概述:** SessionFactory和...

    php-sdk:用于连接到MultiSafepay REST API的默认PHP库

    MultiSafepay PHP SDK关于...如果您没有安装任何客户端实现,请使用以下命令: composer require guzzlehttp/guzzle如果您没有安装任何工厂实现,请使用以下命令: composer require http-interop/http-factory-guzz

    bof:人类的HTTP客户端

    为什么?... 它使最经典的用例(例如下载文件,与JSON API交互或提交表单)尽可能地简单。 由于基于 ,因此可以直接使用Guzzle的方法解决更高级的用例。 总结起来,Bof: 是用户友好的避免使用魔术字符串... 这是Bof与Guzz

    哀悼日变灰操作

    根据给定文件的信息,我们可以提炼出与“哀悼日变灰操作”相关的IT知识点,但首先需要澄清的是,文件内容似乎包含了一些不相关的代码片段和文档,这些内容涉及一个名为"Guzz"的全栈数据层解决方案框架,以及一系列与...

Global site tag (gtag.js) - Google Analytics