我希望将UUID用作我的JPA对象的ID。
目前我只是使用字符串来存储UUID。有什么更高效的方法吗?
我希望将UUID用作我的JPA对象的ID。
目前我只是使用字符串来存储UUID。有什么更高效的方法吗?
你是如何衡量效率的?
例如,将UUID(它是一个byte[]
的文本编码)存储为一对long
值将使您能够在64位体系结构上非常快速地比较它们(比逐个字符比较String
要快得多)。但是,您的编码效率会受到影响,因为您必须编写自定义类型。
在您的情况下,什么最重要?
如果您关注数据库内的性能,则性能将在某种程度上取决于您选择的数据库,但所有数据库基本上都将按字节比较UUID。因此,重要的是使键之间的差异更可能出现在键的开头。
在这方面,UUID设计得很好。最好的UUID是“随机”样式。它们在任何地方都没有很多共同的子字符串,包括开头,并且不会泄漏有关生成它们的计算机的信息。但是,“时间戳”样式的UUID也可以成为一个很好的键,因为低阶位(快速变化的位)首先出现在字符串中,而高阶位(连续UUID不会改变的位)稍后出现。