当前位置:编程学习 > JAVA >>

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 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,