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位长度的字符串。
示例:
hibernate5--主键生成策略
原文地址:http://www.cnblogs.com/huadiyatou/p/7518087.html