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应用程序生成标识符,应尽量避免
可以用<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应用程序生成标识符,应尽量避免