主键增长策略:
assigned:
1.表示手动指定主键值
2.不管数据库中是否支持自动增长语句,该策略都要求程序设置主键值
3.该策略是没有<generator> 元素时的默认策略
4.容易出现重复的主键
identity:
1.适用于Mysql,MS SQLServer等支持自动增长语句的数据库,不支持oracle
2.适用数据库的自动增长语句来生成主键值,手动设置的主键值不起作用。
3不会出现主键重复的异常 推荐
sequence:
1.适用于Oracle数据库,默认Hibernate适用名字为hibernate_sequence的序列来维护主键。
2.可以使用指定的序列来维护主键,指定方式如下:
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="sequence" >
<param name="sequence">etoak_seq</param>
</generator>
</id>
native:
1.自动选择
2.如果底层数据库使用的是MySQL,则native自动相当于identity
如果底层数据库使用的是Oracle,则native 自动相当于
sequence
increment:1.先查询最大的ID,然后最大的ID+1作为新的ID添加到数据库中。
2.并发环境不要使用。