java – hibernate应该为每个表使用唯一的序列吗?
发布时间:2020-12-15 04:43:01 所属栏目:Java 来源:网络整理
导读:我有几个实体使用自动密钥生成策略与Hibernate和postgres. @Id@GeneratedValue(strategy=GenerationType.AUTO)private Long id; 这将导致生成hibernate_sequence,并且每个实体在分配键时将使用该序列. 现在我有一个包含大量缓存数据(如100k条目)和一些用户表
我有几个实体使用自动密钥生成策略与Hibernate和postgres.
@Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; 这将导致生成hibernate_sequence,并且每个实体在分配键时将使用该序列. 现在我有一个包含大量缓存数据(如100k条目)和一些用户表的表.由于两者都使用策略AUTO,因此它们都从相同的休眠序列中获取密钥.结果,即使我只有10个用户,他们都将拥有6-7位长的id,如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从一个开始. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |