【问题标题】:Hibernate GUID local generator休眠 GUID 本地生成器
【发布时间】:2013-12-10 13:08:22
【问题描述】:

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

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

效果很好。

但是,当我分析查询的 sql 时,1 次插入有 2 个 sql:

1).select uuid() 然后 2).insert ....

我有 3 个问题:

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

【问题讨论】:

    标签: java mysql sql hibernate uuid


    【解决方案1】:

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

    但是要回答你的问题

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 2013-11-23
      • 1970-01-01
      相关资源
      最近更新 更多