栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

配置Hibernate以使用Oracle的SYS_GUID()作为主键

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

配置Hibernate以使用Oracle的SYS_GUID()作为主键

您也许可以使用“
guid”生成器。请参阅Hibernate论坛中的这篇文章。看起来他们曾经使用过

SYS_GUID()
一段时间增加了对Oracle的支持,但是文档仍然说它们仅支持SQL Server和MySQL。

我还没有使用JPA批注,但这是使用XML配置的示例:

<id name="PRODUCT_ID">  <generator  /></id>

编辑: 关于第二个问题,我想你是在问为什么Hibernate无法做这样的事情:

INSERT INTO PRODUCT (PRODUCT_ID, )SELECT SYSGUID(), 

原因是Hibernate必须知道对象的ID是什么。例如,请考虑以下情形:

  1. 您创建一个新的Product对象并保存。Oracle分配ID。
  2. 您从hibernate会话中分离产品。
  3. 您稍后重新连接它并进行一些更改。
  4. 现在,您要保留这些更改。

在不知道ID的情况下,Hibernate无法做到这一点。它需要ID才能发出UPDATE语句。因此,实施必须

org.hibernate.id.GUIDGenerator
先生成ID,然后再在INSERT语句中重新使用它。

这就是为什么如果您使用数据库生成的ID(包括在支持它的数据库上自动递增),则Hibernate无法进行 任何批处理的
原因相同。当一次插入很多对象时,使用一种hilo生成器或其他一些Hibernate生成的ID机制是获得良好性能的唯一方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370324.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号