Tech Stack:Java 1.6、JPA(Hibernate 3)、Spring 3、Oracle 11g
私は、要件の1つが顧客に「ReferenceNumber」を返すことであるプロジェクトに取り組んでいます。
1つのオプションは、行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:要件
連番を許可すると、次のことが可能になります。
- 次の番号を推測する顧客。
- 2つの数の間にいくつの数(順序)があったかを調べます。等
この参照は数字であることが望ましいですが、数字の後に続く3文字の接頭辞も問題ありません。