标签: id-generation

如何在使用JPA和Hibernate时选择id生成策略

我正在浏览Hibernate参考指南的Id生成部分和"使用Hibernate的java持久性"

Hibernate和JPA结合使用有很多选项.

我正在寻找有关如何选择特定id生成策略的进一步文档.

我也在寻找引爆点.

例如,希望hilo策略可以减少争用.我假设必须有与此选择相关的权衡.

我希望接受有关权衡的教育.

有没有可用的文献?

java hibernate jpa uniqueidentifier id-generation

102
推荐指数
3
解决办法
15万
查看次数

使用Oracle序列的Hibernate不使用它

我已经配置了hibernate来使用oracle序列.使用cache = 20,increment = 1创建序列.

一切正常,hibernate持久化实体.id值很奇怪:50,51 .... 76,201,202 ... 209,1008,1009,5129,5130 ....

如果我要求序列值(从双重中选择hibernate_sequence.nextval),我得到的值就像2,3,4 ....

如果我打开hibernate sql debug,有时间调用"从双重选择hibernate_sequence.nextval",但是由hibernate分配给ID的号码不会按顺序中继!

@Id
@Column(name = "ID", insertable = false, updatable = false)
@SequenceGenerator(name = "SequenceIdGenerator", sequenceName = "HIBERNATE_SEQUENCE")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SequenceIdGenerator")
private Long id;
Run Code Online (Sandbox Code Playgroud)

hibernate sequence id-generation

20
推荐指数
2
解决办法
4万
查看次数

Google Meet ID 生成机制?

我想讨论一下 Google Meet ID 是如何生成的。正如我们所知,生成唯一的、不可迭代的 ID 的最佳方法可能是使用 UUID。然而,Google Meet 使用完全不同的方法来生成 ID。看来 Google Meet 只是使用 10 个字母长的随机字符串作为 Meet ID。

ID背后是否有任何特殊算法,或者只是随机字符串?

id-generation google-meet

14
推荐指数
0
解决办法
837
查看次数

hibernate中的本机生成器类

我有hibernate映射xml文件的这一部分,我正在寻找本机意味着什么的一个很好的例子.

<hibernate-mapping>
 <class name="com.hib.Task" table="tasks">
  <id name="id" type="int" column="id" >
   <generator class="native"/>
  </id>
Run Code Online (Sandbox Code Playgroud)

我知道它与唯一标识符属性有关,但我真的想有一个例子.

对不起新手问题,我是新手一般的hibernate和编程:)谢谢!

java hibernate hibernate-mapping id-generation

11
推荐指数
1
解决办法
2万
查看次数

@GeneratedValue with strategy = GenerationType.AUTO在重启后生成重复值

我有一个配置为ID的hibernate实体

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
Run Code Online (Sandbox Code Playgroud)

第一次运行时,新元素的创建工作正常.但是,如果我重新启动我的应用程序并检索回记录,下次当我尝试持久保存此实体时,hibernate会尝试使用在未重新启动应用程序时生成的相同ID.

我收到下面的错误,当使用trace选项运行时,我能够看到ID正在被重用

*Hibernate:插入org_myEntity(entitiyJID,entitityName,id)值(?,?,?)org.hibernate.util.JDBCExceptionReporter
SQL错误:20000,SQLState:23505 org.hibernate.util.JDBCExceptionReporter语句已中止,因为它会已在"TABLE_NAME"上定义的"SQL120725164357680"标识的唯一或主键约束或唯一索引中导致重复键值.org.hibernate.event.def.AbstractFlushingEventListener
无法与会话同步数据库状态org.hibernate.exception.ConstraintViolationException:无法*

顺便说一句,我使用的是hibernate 3.3.2.GA,javax.persistance 2.0.0和Derby 10.5.1数据库

有人知道我这一代可能出现什么问题,我该如何解决?

annotations hibernate id-generation

10
推荐指数
1
解决办法
3万
查看次数

Hibernate ID Generator

有人知道如何为hibernate创建自定义ID生成器的一些很好的教程吗?

hibernate jpa primary-key id-generation

8
推荐指数
1
解决办法
2万
查看次数

序列增加 50 而不是 1

我创建了一个 Oracle 序列:

创建序列 seq_acteurs 以 1 递增 1 开始;

通常序列必须递增 1,但插入Acteurstable 时,序列s递增 50!这似乎不合逻辑。为什么会这样?

任何帮助都会得到很大的帮助。

sequences oracle10g id-generation

7
推荐指数
1
解决办法
5396
查看次数

Hibernate,什么是最有效的id生成策略?

我需要通过Hibernate将许多实体插入到数据库中.所以,我想找到最有效的Id生成算法.

因此,Hibernate Documentation存在四种广泛使用的生成策略:

  • IDENTITY
  • 序列
  • 汽车

我应该使用MySQL数据库,所以我不能应用SEQUENCE生成策略.其他策略怎么样?从性能的角度来看效率最高的是什么?

java mysql performance hibernate id-generation

6
推荐指数
1
解决办法
5243
查看次数

为什么要将分片ID附加到生成的ID?

我正在阅读:https : //instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c

在上一节“解决方案”中,他们根据数据库的自动增量功能+历时以来的毫秒数+分片ID生成全局唯一的ID。

为什么我们需要在其中附加分片ID?

具体来说,它说

接下来,我们为要插入的特定数据获取分片ID。假设我们要通过用户ID进行分片,并且有2000个逻辑分片。如果我们的用户ID为31341,则分片ID为31341%2000->1341。我们用该值填充接下来的13位

这没有任何意义:如果您已经通过碎片数量(31341%2000)来修改用户ID,则意味着1)您已经具有用户ID!2)您已经知道mod功能所属的分片!

我在这里误会什么?

database facebook sharding id-generation instagram

6
推荐指数
1
解决办法
196
查看次数

org.hibernate.MappingException:序列的增量大小在实体映射中设置为 [10] 而...大小为 [1]

我们在更新到 Spring Boot 2.2 和相关的 Hibernate 5.4.x 时遇到了问题。

我们确实有以下序列生成器

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "hilo_sequence_generator")
@GenericGenerator(
        name = "hilo_sequence_generator",
        strategy = "...",
        parameters = {
                @Parameter(name = "sequence_name", value = "XXX_SEQUENCE"),
                @Parameter(name = "initial_value", value = "1"),
                @Parameter(name = "increment_size", value = "10"),
                @Parameter(name = "optimizer", value = "hilo")
        })
private Long id;
Run Code Online (Sandbox Code Playgroud)

随着更新到 SB 2.2 / HB 5.4,我们得到以下初始化错误

org.hibernate.MappingException: The increment size of the sequence is set to [10] in the entity mapping while the associated database sequence …
Run Code Online (Sandbox Code Playgroud)

hibernate id-generation spring-boot

6
推荐指数
1
解决办法
3403
查看次数