首页 > 学院 > 开发设计 > 正文

Hibernate 常用的标识生成器

2019-11-06 06:24:06
字体:
来源:转载
供稿:网友

在配置Hibernate映射配置文件中遇到如下情况:

<hibernate-mapping package="com.hibernate.www"> <class name="User" table="t_user"> <id name="id" type="int" column="u_id"> <generator class="native"> </id> ......... </class></hibernate-mapping>

对第四行的代码不是很理解 后来查了点资料如下: Hibernate区分不同的持久化对象是依靠对象标识符(OID)来实现,而对象标识符则可以通过Hibernate内置的标识生成器来产生。(说白了就是Hibernate区分对象需要唯一的対像标识符,这个可以选用内置的对象生成器生成)

assigned:OID是由业务逻辑程序产生,Hibernate只负责持久化,常用于映射自然主键。hilo:OID有Hibernate按照high/low算法产生,该算法需要从数据库的某个表的字段值读取high值。increment:OID由Hibernate按递增方式产生,该算法依赖保存于当前实例中的一个最大值变量。identidy:OID由底层数据库的自增主键生成机制产生,如MySQL中的auto_increment类型主键与SQL Server的identity类型主键。sequence:OID由底层数据库的sequence主键生成机制产生,如Oracel sequence。

native:根据底层数据库对OID的支持,具体选择identity、sequence、hilo生成器来产生OID,常用于跨平台应用。

在选用这些Hibernate内置的表示生成器时,应根据所选用的数据库产品而定。如果数据库为MySQL或SQL Server则优先考虑identity生成器,如果是Oracle则考虑sequence。如果是提高跨平台性,则选用native生成器。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表