最近學院在教授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
......