hibernate自定義主鍵策略, 最近項目中使用hibernate的guid生成策略,配置如下: <id name="id" type="java.lang.String"> <column name="ID" length="32" /> <generator class="guid" /> </id> 發現生成的id很有規律,一看源碼原來hibernate的guid底層使用采用數據庫底層的guid算法機制,對應MYSQL的uuid()函數,SQL
Server的newid()函數,ORACLE的rawtohex(sys_guid())函數等。
具體oracle使用的是(select rawtohex(sys_guid()) from dual) 使用下面的pl/sql測試:
結果: A36190EE69DDAAE7E040200A8A096CE5 A36190EE69DEAAE7E040200A8A096CE5 A36190EE69DFAAE7E040200A8A096CE5 A36190EE69E0AAE7E040200A8A096CE5 A36190EE69E1AAE7E040200A8A096CE5 A36190EE69E2AAE7E040200A8A096CE5 A36190EE69E3AAE7E040200A8A096CE5 A36190EE69E4AAE7E040200A8A096CE5 A36190EE69E5AAE7E040200A8A096CE5 A36190EE69E6AAE7E040200A8A096CE5 A36190EE69E7AAE7E040200A8A096CE5 只有中間一個字符不同。
下面采用hibernate自定id策略接口IdentifierGenerator 我們簡單起見使用jdk自帶的uuid方法:
然后在配置的時候用如下配置即可:
<id name="id" type="java.lang.String"> <column name="ID" length="32" /> <generator class="com.XXX.XXX.UUIDGenerator" /> </id> ~完~
Powered by: BlogJava Copyright © 瘋狂