Hibernate GUID本地生成器

时间:2013-12-10 13:08:22

标签: java mysql sql hibernate uuid

我使用hibernate为我的MySQL数据表生成id:

<class name="XXXX" table="XXXX">
    <id name="Id" column="Id" type="string">
        <generator class="guid"/>
    </id>
....
</class>

它工作正常。

然而,当我分析查询的sql时,1个插入有2个sqls:

1)。选择uuid(),然后选择2).insert ....

我有3个问题:

  1. 为什么不在本地生成“GUID”?
  2. 对于一次插入,“select uuid()”的开销是多少,而不是“UUID.randomUUID()”?
  3. 我可以在hibernate中配置“本地”生成器吗?

1 个答案:

答案 0 :(得分:2)

AFAIK GUID生成器已弃用,您应该使用新的(呃)UUIDGenerator。请参阅http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/mapping.html#d0e5294

但要回答你的问题

  1. 这就是GUID生成器如何调用数据库并将结果传递到对象的id字段
  2. 不知道,测量,但是我猜这种影响可以忽略不计,因为你唯一能做的就是返回一个简单的值
  3. 是的但为什么Hibernate已经支持它(参见documentation