gpt4 book ai didi

java - 使用 UUID 作为数据库主键,Java 类型为 byte[]

转载 作者:行者123 更新时间:2023-12-04 07:08:33 28 4
gpt4 key购买 nike

在 JPA 实体中使用 byte[] 作为主键有什么问题吗?

我想使用 UUID 作为我的主键,但存储为字符串我觉得它太大了。

我正在考虑做这样的事情来将 ID 存储为一个字节 [] 并将其设置为我的实体 ID:

    public static byte[] byteArray(UUID uuid) {
long lsb = uuid.getLeastSignificantBits();
long msb = uuid.getMostSignificantBits();

ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
try {
dos.writeLong(lsb);
dos.writeLong(msb);
dos.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

byte[] data = bos.toByteArray();
// System.out.println("Byte Array Length "+data.length);
return data;

}

将索引放在数据库中会有什么问题吗?我同时使用 Postgres 和 HSQL。我使用 Hibernate 作为我的 JPA 提供程序。

最佳答案

请记住,使用 SQL 客户端的用户在查询 byte[] id 时会遇到问题。这就是为什么 db ids 通常是数字的原因;手写查询要容易得多。

关于java - 使用 UUID 作为数据库主键,Java 类型为 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/731840/

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