使用 Hibernate/JPA 将 UUID 以二进制形式存储在 Mysql 数据库中以提高性能

问题描述 投票:0回答:1

现在,我们将 id 定义为带有 JPA 注解的 String 类型:

@Id
private String id;

现在我们想在Mysql中将UUID保存为二进制,我知道JPA有一种方法来实现它,如下所示:

@Id
@Column(columnDefinition = "BINARY(16)")
private UUID id;

但是将String修改为java.util.UUID类型是一个很大的工作,因为我需要修改大量的代码(大量的测试用例,其他调用等等,无论如何我们不能这样做)。

然后我尝试使用 JPA Converter 将 String 转换为字节并保存它,但我发现 JPA 不允许在 ID 字段上定义转换器。

那么,请问谁可以提供一些可能的方法来将 UUID 保存为二进制而不更改原始 String 类型。

java mysql hibernate jpa uuid
1个回答
1
投票

您可以使用

uuid2
。它提供了更广泛的类型范围可供选择:

  • java.lang.UUID
  • 一个 16 字节数组
  • 十六进制字符串值

您的 ID 会喜欢:

@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(columnDefinition = "BINARY(16)")
@Id
private UUID id;
© www.soinside.com 2019 - 2024. All rights reserved.