gpt4 book ai didi

java - hibernate 应该为每个表使用唯一的序列吗?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:33:33 25 4
gpt4 key购买 nike

我有几个实体使用 AUTO key 生成策略与 Hibernatepostgres

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

这将导致生成 hibernate_sequence,每个实体在分配键时将使用该序列。

现在我有一个包含大量缓存数据(如 100k 条目)和一些用户表的表。由于两者都使用 AUTO 策略,因此它们都从相同的 hibernate 序列中获取 key 。因此,即使我只有 10 个用户,他们的 ID 也都是 6-7 位数字,例如 123123

我想知道,一般来说,是否应该为每个表引入一个自定义序列?或者我不应该那么关心 id 生成吗?

最佳答案

我最近为我的项目解决了这个问题。我使用增强型序列生成器(这是序列样式生成器的默认设置)并将 prefer_sequence_per_entity 参数设置为 true

我的 package-info.java 的内容:

@GenericGenerator(
name = "optimized-sequence",
strategy = "enhanced-sequence",
parameters = {
@Parameter(name="prefer_sequence_per_entity", value="true"),
@Parameter(name="optimizer", value="hilo"),
@Parameter(name="increment_size", value="50")})
package org.example.model;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;

在使用方面你只需要

@Id @GeneratedValue(generator="optimized-sequence")
public long id;

我更喜欢有单独的序列,因为偶尔我会删除一个表并重新创建它,我希望 ID 从一个开始。

关于java - hibernate 应该为每个表使用唯一的序列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23006172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com