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生成策略

 采用一种高/低位的高效算法产生标识属性值为longshort,int类型的

<id name=”id” type=”java.lang.Integer” column=”ID”>

<gencerator class=” hilo”>

<param class=”table”>数据库中要建一张表</param>

<param class=”column”>表中的字段。并给一个默认值</param>

 </gencreator>

</id>

seqhilo生成策略

采用的还是高/低位算法产生标识属性值为longshort,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生成策略

借助sqlservlermysql数据库中guid字符串产生标识符属性

<id name=”id” type=”java.lang.String” column=”ID”>

<gencerator class=” uuid”></gencreator>

</id>

native生成策略

hibernate自己根据所使用的数据库支持能力从identitysequencehilo生成策略中选择一种标准

<id name=”id” type=”java.lang.String” column=”ID”>

<gencerator class=” guid”></gencreator>

</id>

assigned生成策略

自主设定主键,在调用sessionsave()方法要先设置主键

<id name=”id” type=”java.lang.String” column=”ID”>

<gencerator class=” assigned”></gencreator>

</id>

foreign生成策略

使用属性映射复合主键

让持久化类的标识符属性映射数据库标准的复合主键

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值