1、该实例的准备工作请看:http://write.blog.csdn.net/postedit/48010949
===========标识符生成器之assigned=================================
2、在src建立com.hibernate.test2包,并建立User.java,User.hbm.xml.
package com.hibernate.test2;
public class User {
private int id;
private String name;
private int age;
public User() {
super();
// TODO Auto-generated constructor stub
}
//此处省略get、set方法,但在实际的程序编写中一定要写
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2015-8-30 20:38:16 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.hibernate03.test.User" table="USER">
<id name="id" type="int">
<column name="ID" />
<generator class="assigned" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="age" type="int">
<column name="AGE" />
</property>
</class>
</hibernate-mapping>
USER的sql创建语句为:create table USER(id int(11) NOT NULL AUTO_INCREMENT,name VARCHAR(20),age int(11),primary key (id))ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf-8;
3,将User.hbm.xml加入到hibernate.cfg.xml中,并编写测试代码
第一种测试方式:
package com.hibernate.test2;
import static org.junit.Assert.*;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
public class Test1 {
@Test
public void test() {
Session session=HibernateUtil.getSessionFactory().openSession();
Transaction tx=session.beginTransaction();
User u=new User();
u.setAge(21);
u.setName("mrw");
session.save(u);
tx.commit();
session.close();
}
}
运行结果为:
删除数据,并将测试代码改为:
第二种测试方式:
public void test() {
Session session=HibernateUtil.getSessionFactory().openSession();
Transaction tx=session.beginTransaction();
User u=new User();
u.setId(100);
u.setAge(21);
u.setName("mrw");
session.save(u);
tx.commit();
session.close();
}
运行结果为:
===>assigned:完全由java程序代理生成
=============标识符生成器之increment======================================================
4、沿用第3步骤中的内容,将<generator class="assigned" />改为<generator class="increment" />
第一种测试方式运行结果为:
Hibernate输出的SQL语句如下:
Hibernate: select max(ID) from USER
Hibernate: insert into USER (NAME, AGE, ID) values (?, ?, ?)
第二种测试方式运行结果如下:
Hibernate输出的SQL语句如下:
Hibernate: select max(ID) from USER
Hibernate: insert into USER (NAME, AGE, ID) values (?, ?, ?)
===========标识生成符之identity==========================================================
5、沿用第3步骤中的内容,将<generator class="assigned" />改为<generator class="identity" />
第一种测试方式运行结果为:
第二种测试方式运行结果如下:
=======================================================================================================================================================================
本例仅对Hibnate的这三种标识生成符讨论,对于其他标识生成符,可参照该实例或其它方法学习