1、hibernate自己维护主键的值。首先获取该表中最大主键值,然后加一插入。主键字段对应的属性类型可以是int、short、long以及其封装类型。在高并发或者集群的情况下不能使用。
2、identity:使用数据库自身自增长来维护。
<id name="id" column="tid"> <generator class="sequence"></generator>
结果sql
Hibernate: create table hibernate_sequence ( next_val bigint ) Hibernate: insert into hibernate_sequence values ( 1 ) Hibernate: create table t_student ( tid integer not null, tname varchar(255), tage integer, tscore double precision, primary key (tid) ) Hibernate: select next_val as id_val from hibernate_sequence for update Hibernate: update hibernate_sequence set next_val= ? where next_val=? Hibernate: insert into t_student (tname, tage, tscore, tid) values (?, ?, ?, ?)
<id name="id" column="tid"> <generator class="native"></generator> </id>
3、由Hibernate根据所使用的数据库支持能力从identity、sequence生成策略中选择一种。
4、assigned生成策略:程序员通过setId()手动设置。
5、uuid生成策略:使用IP地址、JVM的启动时间、当前系统时间、和一个计数器值经过计算产生。是一个32位长度的字符串。
示例:
原文:http://www.cnblogs.com/huadiyatou/p/7518087.html