Hibernate主键生成
generator元素:表示了一个主键生成器,它用来为持久化类实例生成唯一的标识
- 程序员自己控制:assigned(数据类型不限、保存前须赋值,自定义ID)
- 数据库控制: identity(数字,无需赋值,标识列/自动增长) sequence(数字,无需赋值,默认使hibernate_sequence这个序列,也可以通过sequence/sequence_name参数赋值)
- hibernate控制:increment uuid/uuid.hex( 数字,无需赋值,是由容器自动生成的一个32位的字符串,.hex代表的是十六进制,32位的字符串)
- 其它:native( 等于identity+sequence)
自定义主键生成器
- 在配置文件xxx.hbm.xml指定主键生成器类
- 创建主键生成器类时实现IdentifierGenerator接口即可,并还可以实现org.hibernate.id.Configurable接口来读取一些配置信息
- 在主键生成器类中重写generate方法,并且自定义格式
实例(这里利用生成主键)
实体类Worker
package com.Tang.two.entity;
public class Worker {
private String wid;
private String wname;
@Override
public String toString() {
return "Worker [wid=" + wid + ", wname=" + wname + "]";
}
public String getWid() {
return wid;
}
public void setWid(String wid) {
this.wid = wid;
}
public String getWname() {
return wname;
}
public void setWname(String wname) {
this.wname = wname;
}
}
Worker.hbm.xml
这里只是用uuid来实现,可以根据需要来实现,要哪个就放哪个出来