使用Hibernate / JPA将UUID作为二进制文件存储在Mysql数据库中以提高性能

时间:2017-04-25 09:14:35

标签: java mysql hibernate jpa uuid

现在,我们使用JPA注释将id定义为String类型:

@Id
private String id;

现在我们想在UML中将UUID保存为二进制文件,我知道JPA有一种实现方式,如下所示:

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

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

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用uuid2,它提供了更广泛的类型范围供您选择:

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

    你的身份证明:

    @GeneratedValue(generator = "uuid2") @GenericGenerator(name = "uuid2", strategy = "uuid2") @Column(columnDefinition = "BINARY(16)") @Id private UUID id;