2013-08-15 50 views
44

java-java.util.UUID.randomUUID()で時間ベースのUUIDを生成したいのですが、UUIDバージョン4を生成します。バージョン1(時間ベース)UUIDの生成方法は?そこには別のライブラリがありますか、またはJava 7 APIでどのように提供されているのか、それを見逃していますか。時間ベースのUUIDの生成方法は?

+0

を見て'。 –

+0

しかし、UUIDクラスは、時間ベースの場合はUUIDからタイムスタンプを取得するpublic long timestamp()などのメソッドを提供しますが、それを生成するメソッドはありません – dogfish

+1

JUG @ http://wiki.fasterxml.com/ JugHome、それはタイプ1をすることができます。 –

答えて

10

現在の時刻以外の時刻でGUIDを生成する必要がある場合は、com.eaio.uuid.UUIDを使用してください。これは、指定された時間に常に同じUUIDを生成するためです。したがって、データにUUIDを生成する要件がある場合、レコードが同じ時間を持つ場合、同じUUIDが生成されます。

UUIDGen.createTime()を使用しようと試みて、先に作成されたレコードと同時に複数のレコードのUUIDを生成する必要がありました。私たちは、それが順不同でレコードの時間を変更する副作用があることを発見しました。後でUUIDを作成する要求に以前の要求よりも古いタイムスタンプがある場合は、前の要求のタイムスタンプに基づいてUUIDになります。

すべての分析の後、作成時にUUIDを作成して元に戻す必要があったので、引数として渡す必要はありません。後でUUIDを生成するためにどのソリューションを使用しても、いずれにも欠点があります。

関連する問題