Hibernate提供的几种内置标示符生成器

increment 适用于代理主键。由Hibernate自动以递增的方式生成标识符,每次增量为1
由于increment生成标识符的机制不依赖于底层数据库系统,因此它适合所有的数据库系统。
适用于只有单个Hibernate应用进程访问同一个数据库的场合,在集群环境下不推荐使用。
OID必须为long、int或short类型。
使用方式:
<id name="id" type="java.lang.Integer" column=" id">  
       <generator class="increment"/>  
</id>  

identity 适用于代理主键。有底层数据库生成标识符。前提是底层数据库支持自动增长字段类型。
OID必须为long、int或short类型。

使用方式:
<id name="id" type="java.lang.Integer" column="id">  
       <generator class="identity"/>  
</id>  

sequence适用于代理主键。Hibernate根据底层数据库序列生成标识符。前提是底层数据库支持序列。
OID必须为long、int或short类型

使用方式:
<id name="id" type="java.lang.Integer" column="id">  
       <generator class="sequence"/>  
</id>  

hilo适用于代理主键。Hibernate根据high/low算法生成标识符。Hibernate把特定表的字段作为"high"值。在默认情况下选择hibernate_unique_key表的next_hi字段。
由于hilo生成标识符机制不依赖于底层数据库系统,因此适用于所有数据库系统。OID必须为long、int或short类型。

使用方式:
<id name="id" type="java.lang.Integer" column="id">  
       <generator class=" hilo"/>  
</id>  

native适用于代理主键。根据底层数据库对自动生成标识符的支持能力,来选择identity、sequence或hilo。

使用方式:
<id name="id" type="java.lang.Integer" column="id">  
       <generator class="native"/>  
</id> 

uuid.hex 适用于代理主键。Hibernate采用128位的UUID算法生成标识符。UUID算法能够在网络环境中生成唯一的字符串标识符。这种标识符生成策略并不流行,因为字符串类型主键比整数类型的主键占有更多的数据空间。

使用方式:
<id name="id" type="java.lang.Integer" column="id">  
       <generator class="uuid.hex"/>  
</id> 

assigned适用于自然主键。由Java应用程序负责生成标识符,为了能让Java应用程序设置OID,不能把setId()方法声明为private类型。应该尽量避免使用自然主键。

使用方式:
<id name="id" type="java.lang.Integer" column="id">  
       <generator class="assigned"/>  
</id> 

映射复合自然主键
使用方式:
<composite-id>
<!-- key-property标签表示哪一些属性对应复合主键 -->
<key-property name="id" column="id" type="string"></key-property>
<key-property name="name" column="name" type="string"></key-property>
</composite-id>
实体类必须实现java.io.Serializable接口,并重新定义equal()和hashcode方法。equal方法判断两个实体类对象相等的条件为:这两个实体类两个属性都相等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值