hibernate 的主鍵生成策略小結
hibernate主鍵生成策略1,increment:以遞增的方式生成OID,每次增加一(hibernate在執行插入語句之前會執行一次查詢,查詢的結果為這個表中的id的最大值,然後加1處理在綁定到這個insert語句中)
<id name="userid" type="java.lang.Long">
<column name="USERID" precision="22" scale="0" />
<generator />
</id>
2,identity:由底層數據庫生成OID,條件是數據庫支持自動增加的字段
實現方式:
<id name="id" type="long" column="person_id" >
<generator class=“identity"/>
</id>
3.sequence:Hibernate根據底層數據庫的序列來生成OID,條件是數據庫支持序列
<id name="userid" type="java.lang.Long">
<column name="USERID" precision="22" scale="0" />
<generator >
<param name="sequence">user_seq</param>
</generator>
</id>
4,hilo:根據high/low算法生成OID。Hibernate根據特定表的字段作為high值,默認是采用 hibernate_unique_key表的next_hi值。Hilo不依賴於底層數據庫係統。但需要在數據庫係統中為其建立表。
<id name="userid" type="java.lang.Long">
<column name="USERID" precision="22" scale="0" />
<generator >
<param name="table">A</param>
<param name="column">suibian</param>
<param name="max_lo">100</param>
</generator>
</id>
5.seqhilo(3.0以後出現):根據高低位算法生成主鍵,需要給頂一個序列。
<id name="userid" type="java.lang.Long">
<column name="USERID" precision="22" scale="0" />
<generator >
<param name="sequence">user_seq</param>
<param name="max_lo">100</param>
</generator>
</id>
6,native:根據數據庫的情況自動選擇OID生成的方式(indentity、sequence、hilo)
最後更新:2017-04-03 14:53:41