打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Hibernate Shards 数据的水平、垂直切割(一)
准备
需要用到的东西如下,下载这几个项目最新的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表:
1
2
3
4
5
6
7
8
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class ContactEntity {
    private String _id;
    private String _name;
    private String _email;
    private String _loginId;
    private String _password;
<br>
    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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
<hibernate-mapping>
    <class name="ContactEntity" table="CONTACT">
        <id name="Id" column="ID" >
            <generator class="assigned"/>
        </id>       
        <property name="EMail" column="EMAIL" />
        <property name="Name" column="NAME" />
        <property name="LoginId" column="LOGIN_ID" />
        <property name="Password" column="PASSWORD" />
    </class>
</hibernate-mapping>
测试用的类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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;
<br>
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();
<br>
            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();
<br>
            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!");
            }
<br>
            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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
<hibernate-configuration>
<session-factory>
      <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
      <property name="connection.url">jdbc:mysql://localhost/hbshards</property>
      <property name="connection.username">root</property>
      <property name="connection.password">dev</property>
      <property name="connection.pool_size">10</property>
      <property name="show_sql">true</property>
      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
      <property name="hbm2ddl.auto">validate</property>
      <mapping resource="ContactEntity.hbm.xml" />
</session-factory>
</hibernate-configuration>
项目结构如下图:
    


运行测试
用Eclipse编译class文件,将Main.class、ContactEntity.class以及hibernate.cfg.xml、ContactEntity.hbm.xml拷贝到lib目录中,运行Main.class结果如下:
    
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Eclipse快速上手Hibernate--1. 入门实例
hibernate3入门
struts+hibernate项目debug总结
SSH框架网上商城项目第1战之整合Struts2、Hibernate4.3和Spring4.2
SSH框架网上商城项目第1战之整合Struts2、Hibernate4
Hibernate框架(一)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服