hibernate oid标志符使用实例



hibernate的对象标识符(OID)

可以用<id>元素来设定OID,OID可以定义为short、int、long类型,默认情况下,hibernate生成持久类时,会将OID定义为Java包装类型。
用<id>元素中的<generator>子元素来设定标识符生成器。例如:

<id type=”long” column=”ID”>
<generator
/>
</id>

标识符生成器由net.sf.hibernate.id.IdentifierGenerator接口实现,在设置<generator>子元素的class属性时,可以写完整的名字,也可以写缩写名。例如,上例中的”
increment”等同于”net.sf.hibernate.id.IncrementGenerator”。

以下是几种hibernate提供的内置标识符生成器:
1.increment

适用于:所有的数据库系统;

只有单个hibernate进程访问同一个数据库的情况;

OID必须为short、int、long类型。
2.identity

适用于:支持自动增长字段的数据库系统;

OID必须为short、int、long类型。

3.sequence

序列定义方式和上面的例子有所不同:

<id type=”long”
column=”ID”>

<generator >

<param >
</ generator>

</id>

适用于:支持序列的数据库系统;


OID必须为short、int、long类型。

4.hilo

由hibernate按照high/low算法生成标识符,从数据库的指定表的字段中获取high值,生成后,在其他的单独事务中修改此值。

定义方式:

<id type=”long” column=”ID”>

<generator >
<param
>
<param >
<param
>
</ generator>

</id>

适用于:任何数据库系统;

OID必须为short、int、long类型。

5.native

根据底层数据库对自动生成标识符的支持能力,来选择使用identity、sequence、hilo。

适用于:跨数据库平台的开发;

OID必须为short、int、long类型。

6.uuid.hex

由hibernate用UUID算法生成标识符。并不流行。

7.assigned

适用于自然主键。由Java应用程序生成标识符,应尽量避免