mem*_*und 3 java sql postgresql hibernate
我有几个实体使用AUTO密钥生成策略Hibernate和postgres.
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
Run Code Online (Sandbox Code Playgroud)
这将导致hibernate_sequence生成,并且每个实体将在分配键时使用该序列.
现在我有一个包含大量缓存数据(如100k条目)和一些用户表的表.作为两种使用策略AUTO,它们都从相同的休眠序列中获取密钥.结果,即使我只有10个用户,他们都会有6到7位数的id,就像123123.
我想知道,一般来说,是否应该为每个表引入自定义序列?或者我不应该关心id那么多?
Mar*_*nik 10
我最近为我的项目解决了这个问题.我使用增强序列生成器(这是序列式生成器的默认值)并将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;
Run Code Online (Sandbox Code Playgroud)
在使用方面,你只需要
@Id @GeneratedValue(generator="optimized-sequence")
public long id;
Run Code Online (Sandbox Code Playgroud)
我更喜欢单独的序列,因为偶尔我会删除一个表并重新创建它,我希望ID从一个开始.
| 归档时间: |
|
| 查看次数: |
4533 次 |
| 最近记录: |