hibernate主键生成策略
Hibernate表示符属性:在hibernate的映射文件(*.hbm.xml)文件中<id>元素定义了持久化类的标识符属性的名称。类型和数据库表中字段的映射
<id>元素中的<generator>子元素则用来设置当前持久化类的标识符属性的生成策略
increment生成策略 (适用于数据库:oralce,mySql)
从数据库表中获取当前主键字段中的最大值。然后再最大值的基础上加1
<id name=”id” type=”java.lang.Integer” column=”ID”>
<gencerator class=”increment”></gencreator>
</id>
identity生成策略 (适用于数据库:oralce,mySql,db2)
数据库中支持id自动增长
<id name=”id” type=”java.lang.Integer” column=”ID”>
<gencerator class=” identity”></gencreator>
</id>
sequence生成策略(适用于数据库:oralce)
采用序列自动增长
<id name=”id” type=”java.lang.Integer” column=”ID”>
<gencerator class=” sequence”>
<param class=”sequence”>序列名称</param>
</gencreator>
</id>
hilo生成策略
采用一种高/低位的高效算法产生标识属性值为long,short,int类型的
<id name=”id” type=”java.lang.Integer” column=”ID”>
<gencerator class=” hilo”>
<param class=”table”>数据库中要建一张表</param>
<param class=”column”>表中的字段。并给一个默认值</param>
</gencreator>
</id>
seqhilo生成策略
采用的还是高/低位算法产生标识属性值为long,short,int类型的与hilo不同的是他使用指定的sequence获取高低位值
<id name=”id” type=”java.lang.Integer” column=”ID”>
<gencerator class=” seqhilo”>
<param class=” sequence”>序列名称</param>
</gencreator>
</id>
uuid生成策略
采用128位的uuid的算法生成一个字符串类型的主建值,可用于分布式的hibernate应用中。效率高
<id name=”id” type=”java.lang.String” column=”ID”>
<gencerator class=” uuid”></gencreator>
</id>
guid生成策略
借助sqlservler或mysql数据库中guid字符串产生标识符属性
<id name=”id” type=”java.lang.String” column=”ID”>
<gencerator class=” uuid”></gencreator>
</id>
native生成策略
让hibernate自己根据所使用的数据库支持能力从identity,sequence,hilo生成策略中选择一种标准
<id name=”id” type=”java.lang.String” column=”ID”>
<gencerator class=” guid”></gencreator>
</id>
assigned生成策略
自主设定主键,在调用session的save()方法要先设置主键
<id name=”id” type=”java.lang.String” column=”ID”>
<gencerator class=” assigned”></gencreator>
</id>
foreign生成策略
使用属性映射复合主键
让持久化类的标识符属性映射数据库标准的复合主键
补充:软件开发 , Java ,