<1>assigned(指定的,赋值的)程序员自己控制的,数据类型不限,保存前必须赋值; <2>identity(身份,个性),sequence(序列,顺序)都由数据库控制; identity(重点掌握) 必须是有标识列一般用来连接SQL和MySQL,数字 无需赋值;sequence(重点掌握)这是序列,一般连接Oracle,数字 无需赋值,默认使用hibernate_sequence这个序列,也可以通过sequence参数赋值
insert into t_student(sid,sname) values(hibernate_sequence.nextval,?)
insert into t_student(sid,sname) values(seq_abc.nextval,?)
<3>increment hilo uuid/uuid.hex 有hibernate框架控制,increment 自增,数字 无需赋值;hilo 数字,无需赋值,需要额外提供一个表,还需要在表中定义一个整数类型的字段,并插入一条记录,使用时需要指定3个参数,table:表示hilo算法需要引用的表名(默认表名为hibernate_unique_key),column:表示hilo算法需要引用的列名(默认列名为next_hi),max_lo:表示hilo算法需要的变化值(可以随便给,一般设置为1); uuid/uuid.hex (是由容器自动生成的一个32位的字符串,.hex代表的是十六进制),32位的字符串,无需赋值,
<4>native (重点掌握)等于identity+sequence
<5>foreign(主要用在一对一关系的映射中)
<7> 自定义主键生成键,实现org.hibernate.id.IdentifierGenerator接口即可,并还可以实现org.hibernate.id.Configurable接口来读取一些配置信息,PersistentIdentifierGenerator.TABLE,
PersistentIdentifierGenerator.PK