技术栈:Java 1.6、JPA (Hibernate 3)、Spring 3、Oracle 11g
我正在做一个项目,其中一个要求是给客户一个'ReferenceNumber'。
一种选择是返回行 ID,但要使其正常工作,它不能是连续的。否则,您可以猜测下一个数字等。
我可以在 Java 中生成一个数字并将其存储在单独的列中,但我会确保没有冲突。
有办法在数据库中生成这样的数字,但不确定它是否能保证唯一性。
从数据库的角度来看,这种要求是否有最佳实践?
更新 1
当前我在 Java 中使用以下内容来生成数字:
private static SecureRandom random = new SecureRandom();
public static BigInteger getNew() {
return new BigInteger(60, random);
}
public static BigInteger getNew(int numBits) {
return new BigInteger(numBits, random);
}
更新 2:要求
允许序号将允许:
- 客户猜测下一个数字。
- 找出两个数字之间有多少个数字(订单)。ETC
这个引用最好是一个数字,但是说一个三个字母的前缀后跟数字也可以。