最近学院在教授hibernate框架,学到了主键生成策略
<id name="">
<generator class=""></generator>
</id>
其中generator中class值有很多,这里记录一下常见的几种值得使用方法:
native: 根据底层数据库的能力选择identity sequence 或者hilo中的一个
assigned:指定id策略 自己定义 数据类型不定,可以自己定义
identity: 使用数据库自己的主键生成策略 自动增长
仅支持一部分数据库,Oracle
返回值为int long
sequence: 序列 Oracle等数据库自己的主键生成策略 自动增长
支持Oracle DB2 DB 。。。
hilo:高低位算法来生成主键值 不依赖数据库主键策略
uuid: 由Hibernate自动生成,使用UUID生成id
increment:查询当前最大的id值,再进行加一使用
由Hibernate维护得自动增长
有线程安全问题,不推荐使用
说明一下hilo高低位算法的配置和算法
配置:
<generator class="hilo">
<param name="table">hi_value</param>
<param name="column">next_value</param>
<param name="max_lo">100</param>
</generator>
说明:
自动生成一个表hi_value
依赖表中的next_value值
算法:next_value*max_lo+next_value
1
101
202
......