2011-07-27 44 views
0

我想知道如何为JPA创建我自己的自定义ID生成器。我不想创建一个数字增量生成器,而是创建一个字母数字,区分大小写的生成器,类似于URL缩写器如何跟踪网站。如何创建一个用于生成唯一值的新SequenceGenerator?

例如,URL缩写器不使用数字键,因为与区分大小写的字母数字生成器相比,它们效率低下。本质上,像urlshortener.com/20这样的东西可以缩写为urlshortener.com/t。随着数字的增加,这种差异成指数地变好,因为它是10^n比62^n,其中n是可用数字的数量。

如何在JPA中将其作为SequenceGenerator实现?

+0

如果您有要求您没有数字ID的要求,那么这是一个有缺陷的要求。恕我直言。 – Shahzeb

回答

2

对于存储在数据库中,这不是更高效。为了显示,您可以使用Base64或Base32编码。

+0

+1为聪明idea.But为什么会显示一个不同的价值在数据库中。 – Shahzeb

+0

URL缩短者如何做到这一点?他们显然不使用Base64或Base32,因为它们具有不规则的字符,例如等号。 –

+1

“为什么会显示与数据库中的内容不同的值” - 要解答该问题,请阅读MVC(模型视图控制器)模式。如何呈现数据视图取决于VIEW,而不是数据模型。所以我同意。如果可能,最好将主键保持为整数。 – Marvo

相关问题