准备

需要用到的东西如下,下载这几个项目最新的release版本:

1. Hibernate Core,这里用的版本为3.5.0-final

2. Hibernate Shards,这里用的版本为3.0.0-Beta2

3. MySql java connector,这里用的版本为5.1.12

4. slf4j,这里用的版本为1.5.11

5. 安装并启动mysql服务,在mysql中建立数据库hbshards,在里面如下建立测试用的contact表:

CREATE TABLE contact (

ID varchar(8) NOT NULL,

LOGIN_ID varchar(18) NOT NULL,

PASSWORD varchar(12) NOT NULL,

NAME varchar(40) NOT NULL,

EMAIL varchar(40) NOT NULL,

PRIMARY KEY (ID)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

6. 设置好java环境变量

这里用于这个测试的CLASSPATH设置如下

.;

D:\Work\research\Java\Hibernate-Test\lib\antlr-2.7.6.jar;

D:\Work\research\Java\Hibernate-Test\lib\dom4j-1.6.1.jar;

D:\Work\research\Java\Hibernate-Test\lib\jta-1.1.jar;

D:\Work\research\Java\Hibernate-Test\lib\javassist-3.9.0.GA.jar;

D:\Work\research\Java\Hibernate-Test\lib\commons-collections-3.1.jar;

D:\Work\research\Java\Hibernate-Test\lib\slf4j-nop-1.5.11.jar;

D:\Work\research\Java\Hibernate-Test\lib\slf4j-api-1.5.11.jar;

D:\Work\research\Java\Hibernate-Test\lib\mysql-connector-java-5.1.12-bin.jar;

D:\Work\research\Java\Hibernate-Test\lib\hibernate3.jar;

Hibernate测试项目

用Eclipse建一个java项目Hibernate-Test,在项目文件夹下面建立lib目录

将hibernate3.jar放入lib目录中,把Hibernate发布包中lib\required目录下除了slf4j-api-1.5.8.jar之外的其他jar文件放入lib目录中

将mysql java connector发布包中的mysql-connector-java-5.1.12-bin.jar放入lib目录

将slf4j发布包中的slf4j-api-1.5.11.jar、slf4j-nop-1.5.11.jar放入lib目录

项目从lib目录中引用hibernate3.jar

在src目录下添加测试用的实体类ContactEntity:

public class ContactEntity {

private String _id;

private String _name;

private String _email;

private String _loginId;

private String _password;

public ContactEntity(){}

public ContactEntity(String id, String loginId, String password

,String name, String email){

this._id = id;

this._loginId = loginId;

this._password = password;

this._name = name;

this._email = email;

}

public String getId(){

return this._id;

}

public void setId(String id){

this._id=id;

}

public String getEMail(){

return this._email;

}

public void setEMail(String email){

this._email=email;

}

public String getName(){

return this._name;

}

public void setName(String name){

this._name=name;

}

public String getLoginId(){

return this._loginId;

}

public void setLoginId(String loginId){

this._loginId=loginId;

}

public String getPassword(){

return this._password;

}

public void setPassword(String password){

this._password=password;

}

public String toString(){

return "{ Id=\"" + this._id + "\""

+ ", LoginId=\"" + this._loginId + "\""

+ ", Name=\"" + this._name + "\""

+ ", EMail=\"" + this._email + "\" }";

}

}

测试实体的映射文件ContactEntity.hbm.xml:

/p>

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

测试用的类:

import java.util.Iterator;

import java.util.List;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

public class Main {

public static void main(String[] args) {

String loginId = "RicCC@cnblogs.com";

String password = "123";

if(args!=null && args.length==2){

loginId = args[0];

password = args[1];

}

HibernateTest(loginId, password);

}

private static void HibernateTest(String loginId, String password){

SessionFactory factory = null;

Session session = null;

Transaction transaction = null;

List contacts = null;

Iterator it = null;

try{

factory = new Configuration().configure().buildSessionFactory();

session = factory.openSession();

transaction = session.beginTransaction();

System.out.println("===Create Contacts===");

ContactEntity c = new ContactEntity("01111111","RicCC@cnblogs.com"

, "123", "Richie", "RicCC@cnblogs.com");

session.save(c);

c = new ContactEntity("91111111","a@cnblogs.com"

, "123", "AAA", "a@cnblogs.com");

session.save(c);

c = new ContactEntity("81111111","b@cnblogs.com"

, "123", "BBB", "b@cnblogs.com");

session.save(c);

c = new ContactEntity("31111111","c@cnblogs.com"

, "123", "CCC", "c@cnblogs.com");

session.save(c);

session.flush();

System.out.println("\n===Login Test===");

contacts = session.createQuery("from ContactEntity where LoginId=:loginId")

.setString("loginId", loginId)

.list();

if(contacts.isEmpty())

System.out.println("contact " + loginId + " not found!");

else{

c = (ContactEntity)contacts.get(0);

if(c.getPassword()==password)

System.out.println("user " + loginId + " login successful");

else

System.out.println("password is incorrect, login failed!");

}

System.out.println("\n===Delete Contacts===");

contacts = session.createQuery("from ContactEntity").list();

it = contacts.iterator();

while(it.hasNext()){

session.delete(it.next());

}

transaction.commit();

}catch(Exception e){

if(transaction!=null) transaction.rollback();

System.out.println(e.getMessage());

}finally{

if(session!=null) session.close();

if(factory!=null) factory.close();

}

}

}

Hibernate配置文件hibernate.cfg.xml:

/p>

"-//Hibernate/Hibernate Configuration DTD//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

com.mysql.jdbc.Driver

jdbc:mysql://localhost/hbshards

root

dev

10

true

org.hibernate.dialect.MySQLDialect

validate

项目结构如下图:

运行测试

用Eclipse编译class文件,将Main.class、ContactEntity.class以及hibernate.cfg.xml、ContactEntity.hbm.xml

拷贝到lib目录中,运行Main.class结果如下:

java 支持 shards 的jar_Hibernate Shards 数据的水平、垂直切割(一)- Hibernate测试环境...相关推荐

  1. Hibernate Shards 数据的水平、垂直切割(一)- Hibernate测试环境

    准备 需要用到的东西如下,下载这几个项目最新的release版本: 1. Hibernate Core,这里用的版本为3.5.0-final 2. Hibernate Shards,这里用的版本为3. ...

  2. Hibernate Shards 数据的水平、垂直切割(二)- Hibernate Shards基本演示

    准备 1. 以Hibernate Shards 数据的水平.垂直切割(一)- Hibernate测试环境的项目为基础 2. Hibernate Shards使用了commons logging,下载个 ...

  3. 64位 java 数据类型_全面解析Java支持的数据类型及Java的常量和变量类型

    基本数据类型变量就是用来储存值而保留的内存位置.这就意味着当你创建一个变量时就会在内存中占用一定的空间. 基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中.因此,通过给变量分 ...

  4. Java后端:10w行级别数据的Excel导入优化记录

    一些细节 数据导入:导入使用的模板由系统提供,格式是 xlsx (支持 65535+行数据) ,用户按照表头在对应列写入相应的数据 数据校验:数据校验有两种: 字段长度.字段正则表达式校验等,内存内校 ...

  5. Java内存区域(运行时数据区域)和内存模型(JMM)

    原文作者:czwbig 原文:https://www.cnblogs.com/czwbig/p/11127124.html Java 内存区域和内存模型是不一样的东西,内存区域是指 Jvm 运行时将数 ...

  6. java堆内与堆外数据交互_Java:汇总堆外数据

    java堆内与堆外数据交互 探索如何以最小的垃圾回收影响和最大的内存利用率创建堆​​外聚合. 使用Java Map,List和Object创建大型聚合通常会产生大量堆内存开销. 这也意味着,一旦聚合超 ...

  7. 什么是java的元数据_学习大数据,为什么要先学习Java?

    是新朋友吗?记得先点蓝字关注我哦- 今日课程菜单 Java全栈开发 | Web前端+H5 大数据开发 | 数据分析  人工智能+Python | 人工智能+物联网 来源:小职(z_zhizuobiao ...

  8. Java实现动态加载页面_[Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新)...

    [Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新) 0 2014-05-07 18:00:06 使用该控件,可以根据url,参数,加载html记录模板(包含 ...

  9. 给 Java 开发者的 10 个大数据工具和框架

    给 Java 开发者的 10 个大数据工具和框架 当今IT开发人员面对的最大挑战就是复杂性,硬件越来越复杂,OS越来越复杂,编程语言和API越来越复杂,我们构建的应用也越来越复杂.根据外媒的一项调查报 ...

最新文章

  1. B站爱情怀,投资者只看利益
  2. Java锁 优先级_详解Java的线程的优先级以及死锁
  3. batch spring 重复执行_一个3年老javaer竟然连Spring的事务管理都不知道,惊呆了
  4. 计算机专业特殊人才上大学,上海交通大学计算机科学与工程系(CSE)
  5. 【Gym - 101612C】【2017-2018NEERC】Consonant Fencity(状压枚举,预处理)
  6. 浏览器访问pdf 的url怎么加密_怎么解决加密的pdf文件?
  7. ElementUI + express实现头像上传及后台图片保存
  8. 免费制作微信小程序开发关于旅游_教大家怎么一步步免费自己做微信小程序
  9. 解决 Package test is missing dependencies for the following libraries: libcrypto.so.1.0.0
  10. java-读取xml
  11. DSP学习笔记(三)——TMS320F28335硬件结构
  12. vscode搭建汇编环境
  13. 瑞昱rtl8168网卡支持Linux吗,瑞昱 RTL8168F PCI-E专用网卡驱动,亲测可用
  14. 超级详细的 Maven 教程(基础+高级)
  15. 周杰伦出道20周年,相关.fans域名等你来抢注~
  16. LIO-SAM论文翻译
  17. 打孔的问题和打孔的位置
  18. 关于项目运行或者打包出现“primordials is not defined”导致运行或打包失败问题
  19. 深度解码真实的90后消费:敢爱敢花,却被高负债压得透不过气
  20. 教你把四十个QQ个人资料小图标全点亮

热门文章

  1. 超越时代的天才——图灵
  2. Ubuntu创建新用户的正确姿势
  3. 你不得不会的MarkDown--手把手教你掌握MarkDown
  4. BIOS英文报错详解;你虽会做系统,但你会看BIOS英文报错吗,仅供大家参考学习。...
  5. Stylus插件开发教程
  6. 轻松学HTML+CSS网站开发
  7. Lync Server外部访问系列PART3:准备反向代理
  8. [VC6] 图像文件格式数据查看器
  9. MySQL优化篇:SHOW语法
  10. 某大龄程序员用亲身经历推翻35岁红线:大厂offer拿到手软,35岁才是黄金年龄!...