我应该如何将UUID与JavaDB/Derby和JDBC一起使用?

Jon*_*nas 4 uuid types jdbc derby javadb

我目前INT在JavaDB(Apache Derby)中用作主键的类型,但由于我正在实现分布式系统,我想将类型更改为java.util.UUID.关于这个的一些问题:

  • 我应该将JavaDB/Derby中的哪种数据类型用于UUID?我已经看过CHAR(16) FOR BIT DATA了,但我对此并不了解.是VARCHAR(16)选择吗?

  • 我应该如何在JDBC中使用它?例如PreparedStatement,如何设置和获取UUID?

  • 如果我后来想将数据库更改为SQL Server,是否存在与java.util.UUID兼容的数据类型?

简单地说,我应该如何将UUID与JavaDB/Derby和JDBC一起使用?

Jea*_*sky 11

UUID是128位值.该CHAR(16) FOR BIT DATA类型反映出它是以字符形式存储的位数据,以简洁.我认为VARCHAR(16)不会有效,因为它没有位标志.数据库必须能够将二进制数据转换为处理编码的字符数据并且存在风险.更重要的是,它不会给你买任何东西.由于UUID 始终为 128位,因此无法通过使用VARCHAR来节省空间CHAR.所以你不妨使用预期的CHAR(16) FOR BIT DATA.

使用JDBC,我认为你使用get/setBytes()方法,因为它处理少量的二进制数据.(不是积极的,必须尝试这个)

并且不知道SQL Server部分.